diff options
author | Craig Small <csmall@enc.com.au> | 2012-10-02 21:56:38 +1000 |
---|---|---|
committer | Craig Small <csmall@enc.com.au> | 2012-10-02 21:56:38 +1000 |
commit | 19b6f48990b02aeca211b480625b95b2033c1017 (patch) | |
tree | cffb6a345bf5bd1f699344b6892dfb648eb16003 | |
parent | d58dc6b1e715fb1df22ed67bbeab639f9e5454fb (diff) | |
download | procps-ng-19b6f48990b02aeca211b480625b95b2033c1017.tar.gz |
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 <csmall@enc.com.au>
-rw-r--r-- | skill.c | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -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); } |