From 3b0440008beb26d19f97d88e02e21d75a1c6e6f3 Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Thu, 21 Sep 2017 08:51:50 +0100 Subject: [PATCH] with-authinfo-kludge: Use `native' exit status and related interfaces. We're going to need to do things with process exit statuses that Perl doesn't expose through its cooked exit status. --- with-authinfo-kludge | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/with-authinfo-kludge b/with-authinfo-kludge index 4317d8d..d2d62fe 100755 --- a/with-authinfo-kludge +++ b/with-authinfo-kludge @@ -762,17 +762,18 @@ set_sighandler "CHLD", sub { defined (my $kid = waitpid -1, WNOHANG) or sysfail "failed to reap child: $!"; last KID if $kid <= 0; + my $st = ${^CHILD_ERROR_NATIVE}; my ($how, $rc); - if ($? == 0) { + if (WIFEXITED($st) && WEXITSTATUS($st) == 0) { $how = "exited successfully"; $rc = 0; - } elsif ($? & 0xff) { - my $sig = $? & 0x7f; + } elsif (WIFSIGNALED($st)) { + my $sig = WTERMSIG($st); $how = "killed by signal $sig"; $how .= " (core dumped)" if $? & 0x80; $rc = $sig | 0x80; } else { - $rc = $? >> 8; + $rc = WEXITSTATUS($st); $how = "exited with status $rc"; } if ($kid == $CLIENTKID) { -- 2.11.0