summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/lib/sigismember.c
diff options
context:
space:
mode:
Diffstat (limited to 'mdk-stage1/dietlibc/lib/sigismember.c')
-rw-r--r--mdk-stage1/dietlibc/lib/sigismember.c29
1 files changed, 12 insertions, 17 deletions
diff --git a/mdk-stage1/dietlibc/lib/sigismember.c b/mdk-stage1/dietlibc/lib/sigismember.c
index 67a258884..8ffe9762a 100644
--- a/mdk-stage1/dietlibc/lib/sigismember.c
+++ b/mdk-stage1/dietlibc/lib/sigismember.c
@@ -1,21 +1,16 @@
-#define __USE_EXTERN_INLINES 1
#include <signal.h>
+#include <errno.h>
-# define __sigmask(sig) \
- (((unsigned long int) 1) << (((sig) - 1) % (8 * sizeof (unsigned long int))))
+#define __sigmask(sig) ( ((unsigned long)1) << (((sig)-1) % (8*sizeof(unsigned long))) )
+#define __sigword(sig) ( ((sig)-1) / (8*sizeof(unsigned long)) )
-# define __sigword(sig) (((sig) - 1) / (8 * sizeof (unsigned long int)))
-
-# define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))
-typedef struct
- {
- unsigned long int __val[_SIGSET_NWORDS];
- } __sigset_t;
-
-int __sigismember(const __sigset_t *set, int signo) {
- unsigned long int __mask = __sigmask (signo);
- unsigned long int __word = __sigword (signo);
- return (set->__val[__word] & __mask);
+int sigismember(const sigset_t *set, int signo) {
+ if ((signo<1)||(signo>SIGRTMAX)) {
+ (*__errno_location())=EINVAL;
+ return -1;
+ } else {
+ unsigned long __mask = __sigmask (signo);
+ unsigned long __word = __sigword (signo);
+ return (set->sig[__word] & __mask)?1:0;
+ }
}
-
-int sigismember(const sigset_t *env, int signo) __attribute__((weak,alias("__sigismember")));