diff options
-rw-r--r-- | lib/lib.c | 2 | ||||
-rw-r--r-- | tests/killall.test | 12 | ||||
-rw-r--r-- | toys/lsb/killall.c | 12 |
3 files changed, 16 insertions, 10 deletions
@@ -1093,7 +1093,7 @@ void names_to_pid(char **names, int (*callback)(pid_t pid, char *name)) cmd[len] = 0; } if (!strcmp(bb, getbasename(cmd))) goto match; - if (bb!=*cur && !strcmp(bb, getbasename(cmd+strlen(cmd)+1))) goto match; + if (!strcmp(bb, getbasename(cmd+strlen(cmd)+1))) goto match; continue; match: if (callback(u, *cur)) break; diff --git a/tests/killall.test b/tests/killall.test index 40f6cb35..7e171d46 100644 --- a/tests/killall.test +++ b/tests/killall.test @@ -5,10 +5,16 @@ #testing "name" "command" "result" "infile" "stdin" echo "#!$(which sh) -yes > /dev/null" > toybox.killall.test.script +while true; do + sleep 0.1 +done" > toybox.killall.test.script chmod a+x toybox.killall.test.script +cp toybox.killall.test.script toybox.test + +./toybox.test & +testing "short name" "killall toybox.test && echo killed ; pgrep -l toybox.test || echo really" "killed\nreally\n" "" "" ./toybox.killall.test.script & -testing "script" "killall toybox.killall.test.script && echo killed ; pgrep -l toybox.killall.test.script || echo really" "killed\nreally\n" "" "" +testing "long name" "killall toybox.killall.test.script && echo killed ; pgrep -l toybox.killall.test.script || echo really" "killed\nreally\n" "" "" -rm -f toybox.killall.test.script +rm -f toybox.killall.test.script toybox.test diff --git a/toys/lsb/killall.c b/toys/lsb/killall.c index 119e01fa..47aea23d 100644 --- a/toys/lsb/killall.c +++ b/toys/lsb/killall.c @@ -39,7 +39,7 @@ static int kill_process(pid_t pid, char *name) if (pid == TT.cur_pid) return 0; - if (toys.optflags & FLAG_i) { + if (FLAG(i)) { fprintf(stderr, "Signal %s(%d)", name, (int)pid); if (!yesno(0)) return 0; } @@ -53,8 +53,8 @@ static int kill_process(pid_t pid, char *name) } else offset++; } if (errno) { - if (!(toys.optflags & FLAG_q)) perror_msg("pid %d", (int)pid); - } else if (toys.optflags & FLAG_v) + if (!FLAG(q)) perror_msg("pid %d", (int)pid); + } else if (FLAG(v)) printf("Killed %s(%d) with signal %d\n", name, pid, TT.signum); return 0; @@ -67,14 +67,14 @@ void killall_main(void) TT.names = toys.optargs; TT.signum = SIGTERM; - if (toys.optflags & FLAG_l) { + if (FLAG(l)) { list_signals(); return; } if (TT.s || (*TT.names && **TT.names == '-')) { if (0 > (TT.signum = sig_to_num(TT.s ? TT.s : (*TT.names)+1))) { - if (toys.optflags & FLAG_q) exit(1); + if (FLAG(q)) exit(1); error_exit("Invalid signal"); } if (!TT.s) { @@ -83,7 +83,7 @@ void killall_main(void) } } - if (!(toys.optflags & FLAG_l) && !toys.optc) help_exit("no name"); + if (!toys.optc) help_exit("no name"); TT.cur_pid = getpid(); |