diff options
| author | vda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2006-12-23 01:06:21 +0000 |
|---|---|---|
| committer | vda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2006-12-23 01:06:21 +0000 |
| commit | cd253b0335ea4a3ef29723808ff42c45e1618577 (patch) | |
| tree | 607468384b6707c7b60505da37d2aefc49d355cf /libbb | |
| parent | d5dd7716747effab3ebbe891ec21ba753499aa33 (diff) | |
| download | busybox-w32-cd253b0335ea4a3ef29723808ff42c45e1618577.tar.gz busybox-w32-cd253b0335ea4a3ef29723808ff42c45e1618577.tar.bz2 busybox-w32-cd253b0335ea4a3ef29723808ff42c45e1618577.zip | |
fix recognitions of -SIGname signals
(fix by Jacques LUDER <jacques.luder@thalesgroup.com>)
git-svn-id: svn://busybox.net/trunk/busybox@17061 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to 'libbb')
| -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 | ||
