diff options
Diffstat (limited to 'src/signal/bsd_signal.c')
-rw-r--r-- | src/signal/bsd_signal.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/signal/bsd_signal.c b/src/signal/bsd_signal.c new file mode 100644 index 00000000..148029c0 --- /dev/null +++ b/src/signal/bsd_signal.c @@ -0,0 +1,21 @@ +#include <signal.h> + +void (*bsd_signal(int sig, void (*func)(int)))(int) +{ + struct sigaction act, oact; + act.sa_handler = func; + act.sa_flags = SA_RESTART; + + sigemptyset(&act.sa_mask); + sigaddset(&act.sa_mask, sig); + + if (sigaction(sig, &act, &oact) == -1) { + return SIG_ERR; + } + + return oact.sa_handler; +} + +/* +XOPEN(400,700) +*/ |