chiark
/
gitweb
/
~ian
/
chiark-utils.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
cb4bd3d
)
cgi-fcgi-interp: new garbage collection approach, compiles
author
Ian Jackson
<ijackson@chiark.greenend.org.uk>
Tue, 29 Mar 2016 18:29:30 +0000
(19:29 +0100)
committer
Ian Jackson
<ijackson@chiark.greenend.org.uk>
Tue, 29 Mar 2016 18:32:52 +0000
(19:32 +0100)
cprogs/cgi-fcgi-interp.c
patch
|
blob
|
history
diff --git
a/cprogs/cgi-fcgi-interp.c
b/cprogs/cgi-fcgi-interp.c
index 99997d08745220efec0702fe36b0251d7d1e45fa..f59640f4305eb86342d135462f7aa02e3a44e2c5 100644
(file)
--- a/
cprogs/cgi-fcgi-interp.c
+++ b/
cprogs/cgi-fcgi-interp.c
@@
-140,6
+140,7
@@
#include <err.h>
#include <time.h>
#include <signal.h>
#include <err.h>
#include <time.h>
#include <signal.h>
+#include <sys/wait.h>
#include <nettle/sha.h>
#include <nettle/sha.h>
@@
-591,8
+592,20
@@
static void child_handler(int dummy) {
status, (unsigned long)got);
continue;
}
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;
static void setup_handlers(void) {
struct sigaction sa;