diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2006-12-23 01:06:21 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2006-12-23 01:06:21 +0000 |
commit | 2a813e20e2a8720160a059a036cb6c066044f709 (patch) | |
tree | 607468384b6707c7b60505da37d2aefc49d355cf | |
parent | 8f6c79240dc7c1e0b819a1a1309240477d8e0d84 (diff) | |
download | busybox-w32-2a813e20e2a8720160a059a036cb6c066044f709.tar.gz busybox-w32-2a813e20e2a8720160a059a036cb6c066044f709.tar.bz2 busybox-w32-2a813e20e2a8720160a059a036cb6c066044f709.zip |
fix recognitions of -SIGname signals
(fix by Jacques LUDER <jacques.luder@thalesgroup.com>)
-rw-r--r-- | libbb/u_signal_names.c | 15 | ||||
-rw-r--r-- | procps/fuser.c | 3 |
2 files changed, 10 insertions, 8 deletions
diff --git a/libbb/u_signal_names.c b/libbb/u_signal_names.c index 88311dd9c..eb835e936 100644 --- a/libbb/u_signal_names.c +++ b/libbb/u_signal_names.c | |||
@@ -15,7 +15,8 @@ static const struct signal_name { | |||
15 | } signals[] = { | 15 | } signals[] = { |
16 | // SUSv3 says kill must support these, and specifies the numerical values, | 16 | // SUSv3 says kill must support these, and specifies the numerical values, |
17 | // http://www.opengroup.org/onlinepubs/009695399/utilities/kill.html | 17 | // http://www.opengroup.org/onlinepubs/009695399/utilities/kill.html |
18 | {0, "0"}, {1, "HUP"}, {2, "INT"}, {3, "QUIT"}, {6, "ABRT"}, {9, "KILL"}, | 18 | // TODO: "[SIG]EXIT" shouldn't work for kill, right? |
19 | {0, "EXIT"}, {1, "HUP"}, {2, "INT"}, {3, "QUIT"}, {6, "ABRT"}, {9, "KILL"}, | ||
19 | {14, "ALRM"}, {15, "TERM"}, | 20 | {14, "ALRM"}, {15, "TERM"}, |
20 | // And Posix adds the following: | 21 | // And Posix adds the following: |
21 | {SIGILL, "ILL"}, {SIGTRAP, "TRAP"}, {SIGFPE, "FPE"}, {SIGUSR1, "USR1"}, | 22 | {SIGILL, "ILL"}, {SIGTRAP, "TRAP"}, {SIGFPE, "FPE"}, {SIGUSR1, "USR1"}, |
@@ -30,13 +31,13 @@ int get_signum(const char *name) | |||
30 | { | 31 | { |
31 | int i; | 32 | int i; |
32 | 33 | ||
33 | i = atoi(name); | 34 | i = bb_strtou(name, NULL, 10); |
34 | if (i) return i; | 35 | if (!errno) return i; |
35 | for (i = 0; i < sizeof(signals) / sizeof(struct signal_name); i++) | 36 | for (i = 0; i < sizeof(signals) / sizeof(struct signal_name); i++) |
36 | if (!strcasecmp(signals[i].name, name) || | 37 | if (strcasecmp(name, signals[i].name) == 0 |
37 | (!strncasecmp(signals[i].name, "SIG", 3) | 38 | || (strncasecmp(name, "SIG", 3) == 0 |
38 | && !strcasecmp(signals[i].name+3, signals[i].name))) | 39 | && strcasecmp(&name[3], signals[i].name) == 0)) |
39 | return signals[i].number; | 40 | return signals[i].number; |
40 | return -1; | 41 | return -1; |
41 | } | 42 | } |
42 | 43 | ||
diff --git a/procps/fuser.c b/procps/fuser.c index 4628cdf5c..a216eaec8 100644 --- a/procps/fuser.c +++ b/procps/fuser.c | |||
@@ -323,7 +323,8 @@ int fuser_main(int argc, char **argv) | |||
323 | optn = fuser_option(argv[i]); | 323 | optn = fuser_option(argv[i]); |
324 | if(optn) opt |= optn; | 324 | if(optn) opt |= optn; |
325 | else if(argv[i][0] == '-') { | 325 | else if(argv[i][0] == '-') { |
326 | if(0>(killsig = get_signum(argv[i]+1))) | 326 | killsig = get_signum(argv[i]+1); |
327 | if(0 > killsig) | ||
327 | killsig = SIGTERM; | 328 | killsig = SIGTERM; |
328 | } | 329 | } |
329 | else { | 330 | else { |