X-Git-Url: http://www.dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fdirplex%2Fconf.c;h=e83d847e665663037602649a450573cd804eba5f;hb=300d73d9ee0fe2fb09643a2a146711f1a8d7edd3;hp=ffa43138d6db56ed4c44c0a9dc6571fc6f497c60;hpb=a756e349cf57ac9468161439a1452490dc009c94;p=ashd.git diff --git a/src/dirplex/conf.c b/src/dirplex/conf.c index ffa4313..e83d847 100644 --- a/src/dirplex/conf.c +++ b/src/dirplex/conf.c @@ -76,6 +76,8 @@ static void freeconfig(struct config *cf) freepattern(pat); } freeca(cf->index); + if(cf->capture != NULL) + free(cf->capture); free(cf); } @@ -228,6 +230,14 @@ struct config *readconfig(char *file) cf->index = NULL; if(s->argc > 1) cf->index = cadup(s->argv + 1); + } else if(!strcmp(s->argv[0], "capture")) { + if(s->argc < 2) { + flog(LOG_WARNING, "%s:%i: missing argument to capture declaration", s->file, s->lno); + continue; + } + if(cf->capture != NULL) + free(cf->capture); + cf->capture = sstrdup(s->argv[1]); } else if(!strcmp(s->argv[0], "eof")) { break; } else { @@ -329,7 +339,7 @@ struct config **getconfigs(char *file) return(ret = buf.b); } -struct child *findchild(char *file, char *name) +struct child *findchild(char *file, char *name, struct config **cf) { int i; struct config **cfs; @@ -337,10 +347,13 @@ struct child *findchild(char *file, char *name) cfs = getconfigs(file); for(i = 0; cfs[i] != NULL; i++) { - if((ch = getchild(cfs[i], name)) != NULL) - break; + if((ch = getchild(cfs[i], name)) != NULL) { + if(cf != NULL) + *cf = cfs[i]; + return(ch); + } } - return(ch); + return(NULL); } struct pattern *findmatch(char *file, int trydefault, int dir)