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 /libbb/u_signal_names.c | |
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>)
Diffstat (limited to 'libbb/u_signal_names.c')
-rw-r--r-- | libbb/u_signal_names.c | 15 |
1 files changed, 8 insertions, 7 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 | ||