From: Ian Jackson Date: Tue, 29 Mar 2016 18:29:30 +0000 (+0100) Subject: cgi-fcgi-interp: new garbage collection approach, compiles X-Git-Tag: archive/debian/5.0.0~51 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=fa842b6dae3eeda6067a3cb5c774d311e4f1b3fc;p=chiark-utils.git cgi-fcgi-interp: new garbage collection approach, compiles --- diff --git a/cprogs/cgi-fcgi-interp.c b/cprogs/cgi-fcgi-interp.c index 99997d0..f59640f 100644 --- a/cprogs/cgi-fcgi-interp.c +++ b/cprogs/cgi-fcgi-interp.c @@ -140,6 +140,7 @@ #include #include #include +#include #include @@ -591,8 +592,20 @@ static void child_handler(int dummy) { status, (unsigned long)got); continue; } - if (status - + if (WIFEXITED(status)) { + int v = WEXITSTATUS(status); + if (v) warn("program failed with error exit status %d", v); + exit(status); + } else if (WIFSIGNALED(status)) { + int s = WTERMSIG(status); + err(status & 0xff, "program died due to fatal signal %s%s", + strsignal(s), WCOREDUMP(status) ? " (core dumped" : ""); + } else { + err(127, "program failed with crazy wait status %#x", status); + } + } + exit(127); +} static void setup_handlers(void) { struct sigaction sa;