aboutsummaryrefslogtreecommitdiff
path: root/procps
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2011-02-21 03:22:20 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2011-02-21 03:22:20 +0100
commitb12553faa8991e11c11f70a81f1d9d44078c7645 (patch)
tree4154d5308a9bad6bb46e2014cb6cc997dc9a92cd /procps
parent55988aed472d9cd362f9a50f4999b5e47ca33abe (diff)
downloadbusybox-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.c25
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;