X-Git-Url: http://www.dolda2000.com/gitweb/?a=blobdiff_plain;f=lib%2Fcf.c;h=719fcad9ba162130119b4c0e3d0d32bdce96982b;hb=13975be5892675874bea8c86d7d8140f5790e7e6;hp=d0b1207ee0ca7526874e42c4867005ad9ccdeb09;hpb=dd28105497f4d32d2433a3786d93af146292c824;p=ashd.git diff --git a/lib/cf.c b/lib/cf.c index d0b1207..719fcad 100644 --- a/lib/cf.c +++ b/lib/cf.c @@ -93,11 +93,13 @@ static int parsefile(struct cfstate *s, FILE *in) line[0] = 0; } s->lno++; - for(p = line + strlen(line) - 1; p >= line; p--) { - if(isspace(*p)) - *p = 0; - else - break; + if(line[0]) { + for(p = line + strlen(line) - 1; p >= line; p--) { + if(isspace(*p)) + *p = 0; + else + break; + } } for(ind = 0, p = line; *p; p++) { if(*p == ' ') { @@ -219,6 +221,27 @@ void freecfparser(struct cfstate *s) free(s); } +char *findstdconf(char *name) +{ + char *path, *p, *p2, *t; + + if((path = getenv("PATH")) == NULL) + return(NULL); + path = sstrdup(path); + for(p = strtok(path, ":"); p != NULL; p = strtok(NULL, ":")) { + if((p2 = strrchr(p, '/')) == NULL) + continue; + *p2 = 0; + if(!access(t = sprintf2("%s/etc/%s", p, name), R_OK)) { + free(path); + return(t); + } + free(t); + } + free(path); + return(NULL); +} + static struct child *newchild(char *name, int type) { struct child *ch;