Patch from Bastian Blank to fix a problem when runing find under ash.

"If the shell is compiled with -DJOBS, this is all fine -- find wasn't
stopped (it was killed), so it correctly uses WTERMSIG instead of WSTOPSIG.
However, if the shell _isn't_ compiled with -DJOBS (which it isn't in d-i),
only WSTOPSIG is used, which extracts the high byte instead of the low
byte from the status code.  Since the status code is 13 (SIGPIPE), "st"
suddenly gets the value 0, which is equivalent to SIGEXIT. Thus, ash prints
out "EXIT" on find's exit."
This commit is contained in:
Glenn L McGrath 2003-09-15 14:42:39 +00:00
parent e16ab475ad
commit a3822de23e

View File

@ -6683,10 +6683,10 @@ sprint_status(char *s, int status, int sigonly)
col = 0;
st = WEXITSTATUS(status);
if (!WIFEXITED(status)) {
st = WSTOPSIG(status);
st = WTERMSIG(status);
#if JOBS
if (!WIFSTOPPED(status))
st = WTERMSIG(status);
if (WIFSTOPPED(status))
st = WSTOPSIG(status);
#endif
if (sigonly) {
if (st == SIGINT || st == SIGPIPE)