diff options
author | Hartmut Becker <becker.ismaning@freenet.de> | 2014-08-24 22:06:15 +0200 |
---|---|---|
committer | Paul Smith <psmith@gnu.org> | 2014-09-07 17:41:59 -0400 |
commit | 8de07f3e4a67fa1c9bd5293d183090ad08b7be6f (patch) | |
tree | 2214e65558248378dad06d192b14bbd051e38367 /vmsjobs.c | |
parent | f970315766906ed789656d87720328b5513e5942 (diff) | |
download | gunmake-8de07f3e4a67fa1c9bd5293d183090ad08b7be6f.tar.gz |
Enhance/fix VMS exit code handling.
* commands.c, function.c, hash.c, job.c, main.c, output.c:
use MAKE exit codes.
* makeint.h: encode make exit codes so that they are VMS compatible.
* job.c: check child exit code for VMS style exit codes.
* vmsjobs.c: save and return VMS style exit code.
Diffstat (limited to 'vmsjobs.c')
-rw-r--r-- | vmsjobs.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -114,7 +114,7 @@ static int ctrlYPressed= 0; int vmsHandleChildTerm(struct child *child) { - int status; + int exit_code; register struct child *lastc, *c; int child_failed; @@ -130,7 +130,9 @@ vmsHandleChildTerm(struct child *child) (void) sigblock (fatal_signal_mask); - child_failed = !(child->cstatus & 1 || ((child->cstatus & 7) == 0)); + child_failed = !(child->cstatus & 1); + if (child_failed) + exit_code = child->cstatus; /* Search for a child matching the deceased one. */ lastc = 0; @@ -202,7 +204,7 @@ vmsHandleChildTerm(struct child *child) /* If the job failed, and the -k flag was not given, die. */ if (child_failed && !keep_going_flag) - die (EXIT_FAILURE); + die (exit_code); (void) sigsetmask (sigblock (0) & ~(fatal_signal_mask)); |