From: Mark Wooding Date: Thu, 21 Sep 2017 07:51:50 +0000 (+0100) Subject: with-authinfo-kludge: Use `native' exit status and related interfaces. X-Git-Tag: 0.1.1~2 X-Git-Url: https://git.distorted.org.uk/~mdw/with-authinfo-kludge/commitdiff_plain/3b0440008beb26d19f97d88e02e21d75a1c6e6f3 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. --- 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) {