]> granicus.if.org Git - procps-ng/commitdiff
skill: fix command line with signal, again
authorCraig Small <csmall@enc.com.au>
Mon, 11 Apr 2016 10:59:48 +0000 (20:59 +1000)
committerCraig Small <csmall@enc.com.au>
Mon, 11 Apr 2016 10:59:48 +0000 (20:59 +1000)
Application of master patch d1d2ccf

Original by Filipe Brandenburger <filbranden@google.com>

Signed-off-by: Craig Small <csmall@enc.com.au>
kill.c
lib/signals.c
skill.c

diff --git a/kill.c b/kill.c
index ce1e3c29f13c3662a7633dd7be858db15855dd7f..65bb19de1df3a0932bbcbecfe8c2e34364cbd1ec 100644 (file)
--- a/kill.c
+++ b/kill.c
@@ -50,7 +50,7 @@ static void __attribute__ ((__noreturn__)) print_usage(FILE * out)
 
 int main(int argc, char **argv)
 {
-    int signo, i, sigopt=0, loop=1;
+    int signo, i, loop=1;
     long pid;
     int exitvalue = EXIT_SUCCESS;
 
@@ -75,8 +75,6 @@ int main(int argc, char **argv)
     signo = skill_sig_option(&argc, argv);
     if (signo < 0)
         signo = SIGTERM;
-    else
-        sigopt++;
 
     opterr=0; /* suppress errors on -123 */
     while (loop == 1 && (i = getopt_long(argc, argv, "l::Ls:hV", longopts, NULL)) != -1)
@@ -124,7 +122,7 @@ int main(int argc, char **argv)
             print_usage(stderr);
         }
 
-    argc -= optind + sigopt;
+    argc -= optind;
     argv += optind;
 
     for (i = 0; i < argc; i++) {
index cff3966c8279232be93ded62e5bad0f0c5a0fb9d..d9b5b9b405da5bdfdec60ca410f9e4e036f56e40 100644 (file)
@@ -200,17 +200,15 @@ const char *signal_number_to_name(int signo)
 
 int skill_sig_option(int *argc, char **argv)
 {
-    int i, nargs = *argc;
+    int i;
     int signo = -1;
-    for (i = 1; i < nargs; i++) {
+    for (i = 1; i < *argc; i++) {
         if (argv[i][0] == '-') {
             signo = signal_name_to_number(argv[i] + 1);
             if (-1 < signo) {
-                if (nargs - i) {
-                    nargs--;
-                    memmove(argv + i, argv + i + 1,
-                        sizeof(char *) * (nargs - i));
-                }
+                memmove(argv + i, argv + i + 1,
+                        sizeof(char *) * (*argc - i));
+                (*argc)--;
                 return signo;
             }
         }
diff --git a/skill.c b/skill.c
index ebfe4b85fade4692ffa0c9b5fd2d2afb2fbc1ae2..dbd4600d307f7e59a7e405cba2b58ecdd6210bb0 100644 (file)
--- a/skill.c
+++ b/skill.c
@@ -418,10 +418,8 @@ static void parse_options(int argc,
         prino = snice_prio_option(&argc, argv);
     else if (program == PROG_SKILL) {
         signo = skill_sig_option(&argc, argv);
-        if (-1 < signo) {
+        if (-1 < signo)
             sig_or_pri = signo;
-            argc -= 1;
-        }
     }
 
     pid_count = 0;