diff options
author | Denys Vlasenko <dvlasenk@redhat.com> | 2011-01-03 12:51:13 +0100 |
---|---|---|
committer | Denys Vlasenko <dvlasenk@redhat.com> | 2011-01-03 12:51:13 +0100 |
commit | 7b276fc17594b89040f1eda054858860c1dc1522 (patch) | |
tree | 3f70f419e82343f3017871882c215b779b326208 /libbb/u_signal_names.c | |
parent | 92ffe0571a49077f06fc65bf0ada753b30fd8a53 (diff) | |
download | busybox-w32-7b276fc17594b89040f1eda054858860c1dc1522.tar.gz busybox-w32-7b276fc17594b89040f1eda054858860c1dc1522.tar.bz2 busybox-w32-7b276fc17594b89040f1eda054858860c1dc1522.zip |
kill[all[5]],pkill: more correct, and smaller, SIGRTMIN/MAX code
function old new delta
__libc_current_sigrtmin 6 - -6
__libc_current_sigrtmax 6 - -6
get_signum 339 295 -44
------------------------------------------------------------------------------
(add/remove: 0/3 grow/shrink: 0/1 up/down: 0/-56) Total: -56 bytes
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Diffstat (limited to 'libbb/u_signal_names.c')
-rw-r--r-- | libbb/u_signal_names.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/libbb/u_signal_names.c b/libbb/u_signal_names.c index 53ccdd1a7..93cebe2fb 100644 --- a/libbb/u_signal_names.c +++ b/libbb/u_signal_names.c | |||
@@ -161,22 +161,31 @@ int FAST_FUNC get_signum(const char *name) | |||
161 | 161 | ||
162 | #if ENABLE_FEATURE_RTMINMAX | 162 | #if ENABLE_FEATURE_RTMINMAX |
163 | # if defined(SIGRTMIN) && defined(SIGRTMAX) | 163 | # if defined(SIGRTMIN) && defined(SIGRTMAX) |
164 | if (strncasecmp(name, "RTMAX", 5) == 0) { | 164 | /* libc may use some rt sigs for pthreads and therefore "remap" SIGRTMIN/MAX, |
165 | * but we want to use "raw" SIGRTMIN/MAX. Underscored names, if exist, provide | ||
166 | * them. If they don't exist, fall back to non-underscored ones: */ | ||
167 | # if !defined(__SIGRTMIN) | ||
168 | # define __SIGRTMIN SIGRTMIN | ||
169 | # endif | ||
170 | # if !defined(__SIGRTMAX) | ||
171 | # define __SIGRTMAX SIGRTMAX | ||
172 | # endif | ||
173 | if (strncasecmp(name, "RTMIN", 5) == 0) { | ||
165 | if (!name[5]) | 174 | if (!name[5]) |
166 | return SIGRTMAX; | 175 | return __SIGRTMIN; |
167 | if (name[5] == '-') { | 176 | if (name[5] == '+') { |
168 | i = bb_strtou(name + 6, NULL, 10); | 177 | i = bb_strtou(name + 6, NULL, 10); |
169 | if (!errno && i <= SIGRTMAX - SIGRTMIN) | 178 | if (!errno && i <= __SIGRTMAX - __SIGRTMIN) |
170 | return SIGRTMAX - i; | 179 | return __SIGRTMIN + i; |
171 | } | 180 | } |
172 | } | 181 | } |
173 | if (strncasecmp(name, "RTMIN", 5) == 0) { | 182 | else if (strncasecmp(name, "RTMAX", 5) == 0) { |
174 | if (!name[5]) | 183 | if (!name[5]) |
175 | return SIGRTMIN; | 184 | return __SIGRTMAX; |
176 | if (name[5] == '+') { | 185 | if (name[5] == '-') { |
177 | i = bb_strtou(name + 6, NULL, 10); | 186 | i = bb_strtou(name + 6, NULL, 10); |
178 | if (!errno && i <= SIGRTMAX - SIGRTMIN) | 187 | if (!errno && i <= __SIGRTMAX - __SIGRTMIN) |
179 | return SIGRTMIN + i; | 188 | return __SIGRTMAX - i; |
180 | } | 189 | } |
181 | } | 190 | } |
182 | # endif | 191 | # endif |