diff options
-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 |