[patch] fix parallel building of tftp-hpa
[tftp-hpa.git] / lib / bsdsignal.c
blobbc3ceb5154465a840318ba2e55f88880659e71c0
1 /*
2 * bsdsignal.c
4 * Use sigaction() to simulate BSD signal()
5 */
7 #include <signal.h>
8 #include <stdlib.h>
9 #include <string.h>
11 void (*bsd_signal(int, void (*)(int)))(int);
13 void (*bsd_signal(int signum, void (*handler)(int)))(int)
15 struct sigaction action, oldaction;
17 memset(&action, 0, sizeof action);
18 action.sa_handler = handler;
19 sigemptyset(&action.sa_mask);
20 sigaddset(&action.sa_mask, signum);
21 action.sa_flags = SA_RESTART;
23 if (sigaction(signum, &action, &oldaction) == -1) {
24 #ifdef SIG_ERR
25 return SIG_ERR;
26 #else
27 return NULL;
28 #endif
31 return oldaction.sa_handler;