12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #include <signal.h>
- #include <errno.h>
- /*
- * sigsets are 32-bit longs. if the 2<<(i-1) bit is on,
- * the signal #define'd as i in signal.h is inluded.
- */
- static sigset_t stdsigs = SIGHUP|SIGINT|SIGQUIT|SIGILL|SIGABRT|SIGFPE|SIGKILL|
- SIGSEGV|SIGPIPE|SIGALRM|SIGTERM|SIGUSR1|SIGUSR2;
- #define BITSIG(s) (2<<(s))
- int
- sigemptyset(sigset_t *set)
- {
- *set = 0;
- return 0;
- }
- int
- sigfillset(sigset_t *set)
- {
- *set = stdsigs;
- return 0;
- }
- int
- sigaddset(sigset_t *set, int signo)
- {
- int b;
- b = BITSIG(signo);
- if(!(b&stdsigs)){
- errno = EINVAL;
- return -1;
- }
- *set |= b;
- return 0;
- }
- int
- sigdelset(sigset_t *set, int signo)
- {
- int b;
- b = BITSIG(signo);
- if(!(b&stdsigs)){
- errno = EINVAL;
- return -1;
- }
- *set &= ~b;
- return 0;
- }
- int
- sigismember(sigset_t *set, int signo)
- {
- int b;
- b = BITSIG(signo);
- if(!(b&stdsigs)){
- errno = EINVAL;
- return -1;
- }
- return (b&*set)? 1 : 0;
- }
|