From: Craig Small Date: Tue, 2 Oct 2012 11:56:38 +0000 (+1000) Subject: kill -PID fixed X-Git-Tag: v3.3.4~12 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=19b6f48990b02aeca211b480625b95b2033c1017;p=procps-ng kill -PID fixed Bug-Debian: http://bugs.debian.org/688731 kill would not permit negative PIDs and thought they were options. kill now explicitly checks for unknown options and if they are numeric assumes they are negative PIDs. The first negative PID stops any further option processing. Signed-off-by: Craig Small --- diff --git a/skill.c b/skill.c index 94bf9c93..a1f89e0a 100644 --- a/skill.c +++ b/skill.c @@ -363,6 +363,7 @@ static void __attribute__ ((__noreturn__)) { int signo, i; int sigopt = 0; + int loop = 1; long pid; int exitvalue = EXIT_SUCCESS; @@ -389,7 +390,8 @@ static void __attribute__ ((__noreturn__)) else sigopt++; - while ((i = getopt_long(argc, argv, "l::Ls:hV", longopts, NULL)) != -1) + opterr=0; /* suppress errors on -123 */ + while (loop == 1 && (i = getopt_long(argc, argv, "l::Ls:hV", longopts, NULL)) != -1) switch (i) { case 'l': if (optarg) { @@ -416,6 +418,13 @@ static void __attribute__ ((__noreturn__)) case 'V': display_kill_version(); exit(EXIT_SUCCESS); + case '?': + if (!isdigit(optopt)) { + xwarnx(_("invalid argument %c"), optopt); + kill_usage(stderr); + } + loop=0; + break; default: kill_usage(stderr); }