summaryrefslogtreecommitdiff
path: root/vmsjobs.c
diff options
context:
space:
mode:
authorHartmut Becker <becker.ismaning@freenet.de>2014-08-24 22:06:15 +0200
committerPaul Smith <psmith@gnu.org>2014-09-07 17:41:59 -0400
commit8de07f3e4a67fa1c9bd5293d183090ad08b7be6f (patch)
tree2214e65558248378dad06d192b14bbd051e38367 /vmsjobs.c
parentf970315766906ed789656d87720328b5513e5942 (diff)
downloadgunmake-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.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/vmsjobs.c b/vmsjobs.c
index 8fe5015..d3444b1 100644
--- a/vmsjobs.c
+++ b/vmsjobs.c
@@ -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));