aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/lib.c2
-rw-r--r--tests/killall.test12
-rw-r--r--toys/lsb/killall.c12
3 files changed, 16 insertions, 10 deletions
diff --git a/lib/lib.c b/lib/lib.c
index b488407e..e00278c5 100644
--- a/lib/lib.c
+++ b/lib/lib.c
@@ -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();