alias.c
上传用户:shbosideng
上传日期:2013-05-04
资源大小:1555k
文件大小:1k
源码类别:

SNMP编程

开发平台:

C/C++

  1. /*
  2. Iulian Radu [v2.0@07.1999]
  3. */
  4. int apos=-1; //memorize position of a free cell
  5. char* findalias(char* buf){
  6. int i;
  7. apos=-1;
  8. for(i=0;i<nalias;i++){
  9.     if(!strcmp(aliasn[i],buf))
  10. return aliasi[i];
  11.     if(!aliasn[i][0]) apos=i; //no need to scan all defined aliases
  12.     }
  13. if(strncmp(buf,"HOST_",5)) return NULL;
  14. return findhost(buf+5);
  15. }
  16. void falias(char* buf){
  17. char alias[129],*replace;
  18. sscanf(buf,"%s",alias);
  19. replace=findnsp(buf,1);
  20. if(findalias(alias))
  21.     fprintf(stderr,err[7],alias);
  22. else
  23.     if(apos<0){
  24. strcpy(aliasn[nalias],alias);
  25. strcpy(aliasi[nalias],replace);
  26. nalias++;}
  27.     else{
  28. strcpy(aliasn[apos],alias);
  29. strcpy(aliasi[apos],replace);}
  30. }
  31. void fcheck4alias(char* buf){
  32. if(!strcasecmp(buf,"yes")){
  33.     usealias=1;
  34.     return;}
  35. if(!strcasecmp(buf,"no")){
  36.     usealias=0;
  37.     return;}
  38. fprintf(stderr,err[11],buf);    
  39. }
  40. char* expand(char* str){
  41. char buf[257],al[129];
  42. int i,j,k;
  43. char* alias;
  44. for(i=j=0;str[i];i++,j++)
  45.     if(str[i]!='%') buf[j]=str[i];
  46.     else{
  47.      for(i++,k=0;(str[i]) && (str[i]!='%');i++,k++)
  48.     al[k]=str[i];
  49. al[k]=0;
  50. alias=findalias(al);
  51. if(!alias){
  52.     fprintf(stderr,err[8],al);
  53.     return str;}
  54. strcpy(buf+j,alias);
  55. j+=strlen(alias)-1;}
  56. buf[j]=0;
  57. strcpy(str,buf);
  58. return str;
  59. }
  60. void fdelalias(char* buf){
  61. int i;
  62. for(i=0;i<nalias;i++)
  63.     if(!strcmp(aliasn[i],buf))
  64. aliasn[i][0]=0;
  65. }