X-Git-Url: https://git.distorted.org.uk/~mdw/with-authinfo-kludge/blobdiff_plain/b149b79ed05457f69ac9f407d394f8ec35e41601..3b0440008beb26d19f97d88e02e21d75a1c6e6f3:/with-authinfo-kludge?ds=sidebyside 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) {