Merge branch 'jk/unify-exit-code-by-receiving-signal'
The internal logic had to deal with two representations of a death of a child process by a signal. * jk/unify-exit-code-by-receiving-signal: run-command: encode signal death as a positive integer
This commit is contained in:
commit
edb6ad5b0a
@ -55,10 +55,8 @@ The functions above do the following:
|
||||
non-zero.
|
||||
|
||||
. If the program terminated due to a signal, then the return value is the
|
||||
signal number - 128, ie. it is negative and so indicates an unusual
|
||||
condition; a diagnostic is printed. This return value can be passed to
|
||||
exit(2), which will report the same code to the parent process that a
|
||||
POSIX shell's $? would report for a program that died from the signal.
|
||||
signal number + 128, ie. the same value that a POSIX shell's $? would
|
||||
report. A diagnostic is printed.
|
||||
|
||||
|
||||
`start_async`::
|
||||
|
2
editor.c
2
editor.c
@ -51,7 +51,7 @@ int launch_editor(const char *path, struct strbuf *buffer, const char *const *en
|
||||
sigchain_push(SIGINT, SIG_IGN);
|
||||
sigchain_push(SIGQUIT, SIG_IGN);
|
||||
ret = finish_command(&p);
|
||||
sig = ret + 128;
|
||||
sig = ret - 128;
|
||||
sigchain_pop(SIGINT);
|
||||
sigchain_pop(SIGQUIT);
|
||||
if (sig == SIGINT || sig == SIGQUIT)
|
||||
|
@ -249,7 +249,7 @@ static int wait_or_whine(pid_t pid, const char *argv0)
|
||||
* mimics the exit code that a POSIX shell would report for
|
||||
* a program that died from this signal.
|
||||
*/
|
||||
code -= 128;
|
||||
code += 128;
|
||||
} else if (WIFEXITED(status)) {
|
||||
code = WEXITSTATUS(status);
|
||||
/*
|
||||
|
@ -31,7 +31,7 @@ sub finish_child {
|
||||
} elsif ($? & 127) {
|
||||
my $code = $? & 127;
|
||||
warn "died of signal $code";
|
||||
return $code - 128;
|
||||
return $code + 128;
|
||||
} else {
|
||||
return $? >> 8;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user