diff options
author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2017-07-14 22:25:58 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2017-07-15 11:38:00 +0200 |
commit | 9d4dc84a769e3e45e420fbef7c7bb2acbbdccd8e (patch) | |
tree | 36ca0ab2f7bd11e3da35a4ec2714c71aa5f03e99 | |
parent | 7d7c7bb2205b92359ac88f3469d3af672e2be929 (diff) | |
download | busybox-w32-9d4dc84a769e3e45e420fbef7c7bb2acbbdccd8e.tar.gz busybox-w32-9d4dc84a769e3e45e420fbef7c7bb2acbbdccd8e.tar.bz2 busybox-w32-9d4dc84a769e3e45e420fbef7c7bb2acbbdccd8e.zip |
ash: protect WIFSTOPPED use with #if JOBS
This change fixes the build in setups where there are
no headers defining WIFSTOPPED and WSTOPSIG (where JOBS has to be
set to 0).
This partially reverts 4700fb5be (ash: make dowait() a bit more
readable. Logic is unchanged, 2015-10-09).
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | shell/ash.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/shell/ash.c b/shell/ash.c index 8c2098dd9..b0c7dac54 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
@@ -4022,15 +4022,19 @@ sprint_status48(char *s, int status, int sigonly) | |||
4022 | 4022 | ||
4023 | col = 0; | 4023 | col = 0; |
4024 | if (!WIFEXITED(status)) { | 4024 | if (!WIFEXITED(status)) { |
4025 | if (JOBS && WIFSTOPPED(status)) | 4025 | #if JOBS |
4026 | if (WIFSTOPPED(status)) | ||
4026 | st = WSTOPSIG(status); | 4027 | st = WSTOPSIG(status); |
4027 | else | 4028 | else |
4029 | #endif | ||
4028 | st = WTERMSIG(status); | 4030 | st = WTERMSIG(status); |
4029 | if (sigonly) { | 4031 | if (sigonly) { |
4030 | if (st == SIGINT || st == SIGPIPE) | 4032 | if (st == SIGINT || st == SIGPIPE) |
4031 | goto out; | 4033 | goto out; |
4032 | if (JOBS && WIFSTOPPED(status)) | 4034 | #if JOBS |
4035 | if (WIFSTOPPED(status)) | ||
4033 | goto out; | 4036 | goto out; |
4037 | #endif | ||
4034 | } | 4038 | } |
4035 | st &= 0x7f; | 4039 | st &= 0x7f; |
4036 | //TODO: use bbox's get_signame? strsignal adds ~600 bytes to text+rodata | 4040 | //TODO: use bbox's get_signame? strsignal adds ~600 bytes to text+rodata |
@@ -4182,8 +4186,10 @@ dowait(int block, struct job *job) | |||
4182 | goto out; | 4186 | goto out; |
4183 | } | 4187 | } |
4184 | /* The process wasn't found in job list */ | 4188 | /* The process wasn't found in job list */ |
4185 | if (JOBS && !WIFSTOPPED(status)) | 4189 | #if JOBS |
4190 | if (!WIFSTOPPED(status)) | ||
4186 | jobless--; | 4191 | jobless--; |
4192 | #endif | ||
4187 | out: | 4193 | out: |
4188 | INT_ON; | 4194 | INT_ON; |
4189 | 4195 | ||