aboutsummaryrefslogtreecommitdiff
path: root/libbb/u_signal_names.c
diff options
context:
space:
mode:
authorDenys Vlasenko <dvlasenk@redhat.com>2011-01-03 12:51:13 +0100
committerDenys Vlasenko <dvlasenk@redhat.com>2011-01-03 12:51:13 +0100
commit7b276fc17594b89040f1eda054858860c1dc1522 (patch)
tree3f70f419e82343f3017871882c215b779b326208 /libbb/u_signal_names.c
parent92ffe0571a49077f06fc65bf0ada753b30fd8a53 (diff)
downloadbusybox-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.c29
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