alias.c
上传用户:shbosideng
上传日期:2013-05-04
资源大小:1555k
文件大小:1k
- /*
- Iulian Radu [v2.0@07.1999]
- */
- int apos=-1; //memorize position of a free cell
- char* findalias(char* buf){
- int i;
- apos=-1;
- for(i=0;i<nalias;i++){
- if(!strcmp(aliasn[i],buf))
- return aliasi[i];
- if(!aliasn[i][0]) apos=i; //no need to scan all defined aliases
- }
- if(strncmp(buf,"HOST_",5)) return NULL;
- return findhost(buf+5);
- }
- void falias(char* buf){
- char alias[129],*replace;
- sscanf(buf,"%s",alias);
- replace=findnsp(buf,1);
- if(findalias(alias))
- fprintf(stderr,err[7],alias);
- else
- if(apos<0){
- strcpy(aliasn[nalias],alias);
- strcpy(aliasi[nalias],replace);
- nalias++;}
- else{
- strcpy(aliasn[apos],alias);
- strcpy(aliasi[apos],replace);}
- }
- void fcheck4alias(char* buf){
- if(!strcasecmp(buf,"yes")){
- usealias=1;
- return;}
- if(!strcasecmp(buf,"no")){
- usealias=0;
- return;}
- fprintf(stderr,err[11],buf);
- }
- char* expand(char* str){
- char buf[257],al[129];
- int i,j,k;
- char* alias;
- for(i=j=0;str[i];i++,j++)
- if(str[i]!='%') buf[j]=str[i];
- else{
- for(i++,k=0;(str[i]) && (str[i]!='%');i++,k++)
- al[k]=str[i];
- al[k]=0;
- alias=findalias(al);
- if(!alias){
- fprintf(stderr,err[8],al);
- return str;}
- strcpy(buf+j,alias);
- j+=strlen(alias)-1;}
- buf[j]=0;
- strcpy(str,buf);
- return str;
- }
- void fdelalias(char* buf){
- int i;
- for(i=0;i<nalias;i++)
- if(!strcmp(aliasn[i],buf))
- aliasn[i][0]=0;
- }