Merge branch 'jk/unify-exit-code-by-receiving-signal' into maint
* jk/unify-exit-code-by-receiving-signal: run-command: encode signal death as a positive integer
This commit is contained in:
@ -55,10 +55,8 @@ The functions above do the following:
|
|||||||
non-zero.
|
non-zero.
|
||||||
|
|
||||||
. If the program terminated due to a signal, then the return value is the
|
. 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
|
signal number + 128, ie. the same value that a POSIX shell's $? would
|
||||||
condition; a diagnostic is printed. This return value can be passed to
|
report. A diagnostic is printed.
|
||||||
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.
|
|
||||||
|
|
||||||
|
|
||||||
`start_async`::
|
`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(SIGINT, SIG_IGN);
|
||||||
sigchain_push(SIGQUIT, SIG_IGN);
|
sigchain_push(SIGQUIT, SIG_IGN);
|
||||||
ret = finish_command(&p);
|
ret = finish_command(&p);
|
||||||
sig = ret + 128;
|
sig = ret - 128;
|
||||||
sigchain_pop(SIGINT);
|
sigchain_pop(SIGINT);
|
||||||
sigchain_pop(SIGQUIT);
|
sigchain_pop(SIGQUIT);
|
||||||
if (sig == SIGINT || sig == 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
|
* mimics the exit code that a POSIX shell would report for
|
||||||
* a program that died from this signal.
|
* a program that died from this signal.
|
||||||
*/
|
*/
|
||||||
code -= 128;
|
code += 128;
|
||||||
} else if (WIFEXITED(status)) {
|
} else if (WIFEXITED(status)) {
|
||||||
code = WEXITSTATUS(status);
|
code = WEXITSTATUS(status);
|
||||||
/*
|
/*
|
||||||
|
@ -31,7 +31,7 @@ sub finish_child {
|
|||||||
} elsif ($? & 127) {
|
} elsif ($? & 127) {
|
||||||
my $code = $? & 127;
|
my $code = $? & 127;
|
||||||
warn "died of signal $code";
|
warn "died of signal $code";
|
||||||
return $code - 128;
|
return $code + 128;
|
||||||
} else {
|
} else {
|
||||||
return $? >> 8;
|
return $? >> 8;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user