dirplex: Made it easier to include configuration "modules".
[ashd.git] / lib / cf.c
index d0b1207..719fcad 100644 (file)
--- 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;