diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2011-02-21 03:22:20 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2011-02-21 03:22:20 +0100 |
commit | b12553faa8991e11c11f70a81f1d9d44078c7645 (patch) | |
tree | 4154d5308a9bad6bb46e2014cb6cc997dc9a92cd /procps | |
parent | 55988aed472d9cd362f9a50f4999b5e47ca33abe (diff) | |
download | busybox-w32-b12553faa8991e11c11f70a81f1d9d44078c7645.tar.gz busybox-w32-b12553faa8991e11c11f70a81f1d9d44078c7645.tar.bz2 busybox-w32-b12553faa8991e11c11f70a81f1d9d44078c7645.zip |
ash: fix ash-signals/signal8 testcase failure
function old new delta
killcmd 109 224 +115
kill_main 882 910 +28
changepath 194 195 +1
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/0 up/down: 144/0) Total: 144 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'procps')
-rw-r--r-- | procps/kill.c | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/procps/kill.c b/procps/kill.c index b51d44a70..39538016e 100644 --- a/procps/kill.c +++ b/procps/kill.c | |||
@@ -206,9 +206,27 @@ int kill_main(int argc, char **argv) | |||
206 | 206 | ||
207 | /* Looks like they want to do a kill. Do that */ | 207 | /* Looks like they want to do a kill. Do that */ |
208 | while (arg) { | 208 | while (arg) { |
209 | /* Support shell 'space' trick */ | 209 | #if ENABLE_ASH || ENABLE_HUSH |
210 | if (arg[0] == ' ') | 210 | /* |
211 | arg++; | 211 | * We need to support shell's "hack formats" of |
212 | * " -PRGP_ID" (yes, with a leading space) | ||
213 | * and " PID1 PID2 PID3" (with degenerate case "") | ||
214 | */ | ||
215 | while (*arg != '\0') { | ||
216 | char *end; | ||
217 | if (*arg == ' ') | ||
218 | arg++; | ||
219 | pid = bb_strtoi(arg, &end, 10); | ||
220 | if (errno && (errno != EINVAL || *end != ' ')) { | ||
221 | bb_error_msg("invalid number '%s'", arg); | ||
222 | errors++; | ||
223 | } else if (kill(pid, signo) != 0) { | ||
224 | bb_perror_msg("can't kill pid %d", (int)pid); | ||
225 | errors++; | ||
226 | } | ||
227 | arg = end; /* can only point to ' ' or '\0' now */ | ||
228 | } | ||
229 | #else | ||
212 | pid = bb_strtoi(arg, NULL, 10); | 230 | pid = bb_strtoi(arg, NULL, 10); |
213 | if (errno) { | 231 | if (errno) { |
214 | bb_error_msg("invalid number '%s'", arg); | 232 | bb_error_msg("invalid number '%s'", arg); |
@@ -217,6 +235,7 @@ int kill_main(int argc, char **argv) | |||
217 | bb_perror_msg("can't kill pid %d", (int)pid); | 235 | bb_perror_msg("can't kill pid %d", (int)pid); |
218 | errors++; | 236 | errors++; |
219 | } | 237 | } |
238 | #endif | ||
220 | arg = *++argv; | 239 | arg = *++argv; |
221 | } | 240 | } |
222 | return errors; | 241 | return errors; |