userplex: Corrected opening of /dev/null.
[ashd.git] / src / patplex.c
index b03b626..13fa062 100644 (file)
@@ -249,13 +249,16 @@ static struct pattern *parsepattern(struct cfstate *s)
            if(pat->restpat != NULL)
                free(pat->restpat);
            pat->restpat = sstrdup(s->argv[1]);
-       } else if(!strcmp(s->argv[0], "set")) {
+       } else if(!strcmp(s->argv[0], "set") || !strcmp(s->argv[0], "xset")) {
            if(s->argc < 3) {
-               flog(LOG_WARNING, "%s:%i: missing header name or pattern for `set' directive", s->file, s->lno);
+               flog(LOG_WARNING, "%s:%i: missing header name or pattern for `%s' directive", s->file, s->lno, s->argv[0]);
                continue;
            }
            omalloc(head);
-           head->name = sstrdup(s->argv[1]);
+           if(!strcmp(s->argv[0], "xset"))
+               head->name = sprintf2("X-Ash-%s", s->argv[1]);
+           else
+               head->name = sstrdup(s->argv[1]);
            head->value = sstrdup(s->argv[2]);
            head->next = pat->headers;
            pat->headers = head;
@@ -488,10 +491,12 @@ static void reloadconf(char *nm)
 static void chldhandler(int sig)
 {
     pid_t pid;
+    int st;
     
-    do {
-       pid = waitpid(-1, NULL, WNOHANG);
-    } while(pid > 0);
+    while((pid = waitpid(-1, &st, WNOHANG)) > 0) {
+       if(WCOREDUMP(st))
+           flog(LOG_WARNING, "child process %i dumped core", pid);
+    }
 }
 
 static void sighandler(int sig)