--- a/toys/lsb/killall.c	2013-11-21 02:31:03.000000000 +0530
+++ b/toys/lsb/killall.c	2013-11-22 15:25:35.207741598 +0530
@@ -4,26 +4,28 @@
  *
  * http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/killall.html
 
-USE_KILLALL(NEWTOY(killall, "<1?lqvi", TOYFLAG_USR|TOYFLAG_BIN))
+USE_KILLALL(NEWTOY(killall, "?s:lqvi", TOYFLAG_USR|TOYFLAG_BIN))
 
 config KILLALL
   bool "killall"
   default y
   help
-    usage: killall [-l] [-iqv] [-SIG] PROCESS_NAME...
+    usage: killall [-l] [-iqv] [-SIG | -s SIG] PROCESS_NAME...
 
     Send a signal (default: TERM) to all processes with the given names.
 
-    -i	ask for confirmation before killing
-    -l	print list of all available signals
-    -q	don't print any warnings or error messages
-    -v	report if the signal was successfully sent
+    -i	      ask for confirmation before killing
+    -l	      print list of all available signals
+    -q	      don't print any warnings or error messages
+    -v	      report if the signal was successfully sent
+    -s SIGNAL send this signal instead of SIGTERM
 */
 
 #define FOR_killall
 #include "toys.h"
 
 GLOBALS(
+  char *sig;
   int signum;
   pid_t cur_pid;
 )
@@ -53,20 +55,20 @@
   char **names = toys.optargs;
 
   TT.signum = SIGTERM;
-  toys.exitval++;
 
   if (toys.optflags & FLAG_l) {
     sig_to_num(NULL);
     return;
   }
 
-  if (**names == '-') {
-    if (0 > (TT.signum = sig_to_num((*names)+1))) {
-      if (toys.optflags & FLAG_q) exit(1);
-      error_exit("Invalid signal");
-    }
+  toys.exitval++;
+  if (*names && **names == '-') {
+    TT.signum = sig_to_num((*names)+1);
     names++;
-  }
+  } else if (toys.optflags & FLAG_s) TT.signum = sig_to_num(TT.sig);
+
+  if (0 > TT.signum)
+    (toys.optflags & FLAG_q) ? exit(1) : error_exit("Invalid signal");
 
   if (!*names) {
     toys.exithelp++;
