diff options
Diffstat (limited to 'src/libstddjb/selfpipe_trap.c')
-rw-r--r-- | src/libstddjb/selfpipe_trap.c | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/src/libstddjb/selfpipe_trap.c b/src/libstddjb/selfpipe_trap.c deleted file mode 100644 index 9970e8c..0000000 --- a/src/libstddjb/selfpipe_trap.c +++ /dev/null @@ -1,46 +0,0 @@ -/* ISC license. */ - -/* MT-unsafe */ - -#include <errno.h> -#include <signal.h> - -#include <skalibs/sysdeps.h> -#include <skalibs/selfpipe.h> -#include "selfpipe-internal.h" - -#ifdef SKALIBS_HASSIGNALFD - -#include <sys/signalfd.h> - -int selfpipe_trap (int sig) -{ - sigset_t ss = selfpipe_caught ; - sigset_t old ; - if (selfpipe_fd < 0) return (errno = EBADF, 0) ; - if ((sigaddset(&ss, sig) < 0) || (sigprocmask(SIG_BLOCK, &ss, &old) < 0)) return 0 ; - if (signalfd(selfpipe_fd, &ss, SFD_NONBLOCK | SFD_CLOEXEC) < 0) - { - int e = errno ; - sigprocmask(SIG_SETMASK, &old, 0) ; - errno = e ; - return 0 ; - } - selfpipe_caught = ss ; - return 1 ; -} - -#else - -#include <skalibs/sig.h> - -int selfpipe_trap (int sig) -{ - if (selfpipe_fd < 0) return (errno = EBADF, 0) ; - if (!sig_catch(sig, &selfpipe_tophalf)) return 0 ; - sigaddset(&selfpipe_caught, sig) ; - sig_unblock(sig) ; - return 1 ; -} - -#endif |