From: Sami Kerola Date: Sun, 24 Jun 2012 11:30:22 +0000 (+0200) Subject: pkill: fix signal spec regression X-Git-Tag: v3.3.4~57 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d45456fb8a6bdeb03bd2dbe1ac3d0a39ce11346c;p=procps-ng pkill: fix signal spec regression Commig a5d9c40262c2f5f917d5f27c5f052bdbe7066ac1 caused signal spec, again, to be required as first option; for example pkill -3 # worked pkill -3 # did not This commit fixes the regression, without breaking option -u argument, assuming no-one is using negative numeric UID specifications with space after -u && the argument. IMHO such use case is rare enough to be broken. Signed-off-by: Sami Kerola --- diff --git a/pgrep.c b/pgrep.c index 3377175f..3a4b3451 100644 --- a/pgrep.c +++ b/pgrep.c @@ -563,18 +563,19 @@ static struct el * select_procs (int *num) int signal_option(int *argc, char **argv) { int sig; - int i = 1; - if (*argc > 2 && argv[1][0] == '-') { - sig = signal_name_to_number(argv[i] + 1); - if (sig == -1 && isdigit(argv[1][1])) - sig = atoi(argv[1] + 1); - if (-1 < sig) { - memmove(argv + i, argv + i + 1, - sizeof(char *) * (*argc - i)); - (*argc)--; - return sig; + int i; + for (i = 1; i < *argc; i++) { + if (argv[i][0] == '-') { + sig = signal_name_to_number(argv[i] + 1); + if (sig == -1 && isdigit(argv[i][1])) + sig = atoi(argv[i] + 1); + if (-1 < sig) { + memmove(argv + i, argv + i + 1, + sizeof(char *) * (*argc - i)); + (*argc)--; + return sig; + } } - i++; } return -1; }