From b9b344aa44ba6221edc8f09398325399049bf388 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Fri, 31 Oct 2008 00:30:48 +0000 Subject: [PATCH] kill[all[5]]: accept -s SIG too. kill_main: +29 bytes by Steve Bennett (steveb AT workware.net.au) --- include/usage.h | 13 ++++++++----- procps/kill.c | 10 +++++++--- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/include/usage.h b/include/usage.h index 9e18ff640..ac62fbf6d 100644 --- a/include/usage.h +++ b/include/usage.h @@ -2041,11 +2041,12 @@ "\n -u Unicode (utf-8)" \ #define kill_trivial_usage \ - "[-l] [-signal] process-id..." + "[-l] [-SIG] PID..." #define kill_full_usage "\n\n" \ - "Send a signal (default is TERM) to the specified process(es)\n" \ + "Send a signal (default is TERM) to given PIDs\n" \ "\nOptions:" \ "\n -l List all signal names and numbers" \ +/* "\n -s SIG Yet another way of specifying SIG" */ \ #define kill_example_usage \ "$ ps | grep apache\n" \ @@ -2058,22 +2059,24 @@ "$ kill 252\n" #define killall_trivial_usage \ - "[-l] [-q] [-signal] process-name..." + "[-l] [-q] [-SIG] process-name..." #define killall_full_usage "\n\n" \ - "Send a signal (default is TERM) to the specified process(es)\n" \ + "Send a signal (default is TERM) to given processes\n" \ "\nOptions:" \ "\n -l List all signal names and numbers" \ +/* "\n -s SIG Yet another way of specifying SIG" */ \ "\n -q Do not complain if no processes were killed" \ #define killall_example_usage \ "$ killall apache\n" #define killall5_trivial_usage \ - "[-l] [-signal]" + "[-l] [-SIG]" #define killall5_full_usage "\n\n" \ "Send a signal (default is TERM) to all processes outside current session\n" \ "\nOptions:" \ "\n -l List all signal names and numbers" \ +/* "\n -s SIG Yet another way of specifying SIG" */ \ #define klogd_trivial_usage \ "[-c N] [-n]" diff --git a/procps/kill.c b/procps/kill.c index ed659afdc..140550018 100644 --- a/procps/kill.c +++ b/procps/kill.c @@ -96,10 +96,14 @@ int kill_main(int argc, char **argv) if (arg[0] != '-') goto do_it_now; } - /* -SIG */ - signo = get_signum(&arg[1]); + arg++; /* skip '-' */ + if (argc > 1 && arg[0] == 's' && arg[1] == '\0') { /* -s SIG? */ + argc--; + arg = *++argv; + } /* else it must be -SIG */ + signo = get_signum(arg); if (signo < 0) { /* || signo > MAX_SIGNUM ? */ - bb_error_msg("bad signal name '%s'", &arg[1]); + bb_error_msg("bad signal name '%s'", arg); return EXIT_FAILURE; } arg = *++argv;