From 9592bfd0dda7c575de07bce2c7a81b8432d845a4 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Wed, 28 Jul 2021 23:45:20 +0000 Subject: Huge incompatible changes. - Obsolete skalibs/environ.h and skalibs/getpeereid.h removed. - rc4 and md5 removed. - All *_t types renamed to avoid treading on POSIX namespace. - subgetopt() renamed to lgetopt(). - signal functions reworked; skasigaction removed; sig_stack removed - Various functions removed: skaoffsetof(), selfpipe_untrap() - New posixplz function: munmap_void. Signed-off-by: Laurent Bercot --- src/libstddjb/selfpipe_finish.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) (limited to 'src/libstddjb/selfpipe_finish.c') diff --git a/src/libstddjb/selfpipe_finish.c b/src/libstddjb/selfpipe_finish.c index 60899eb..db42430 100644 --- a/src/libstddjb/selfpipe_finish.c +++ b/src/libstddjb/selfpipe_finish.c @@ -6,36 +6,48 @@ #ifdef SKALIBS_HASSIGNALFD +#include #include + #include -#include "selfpipe-internal.h" #include +#include "selfpipe-internal.h" void selfpipe_finish (void) { + int e = errno ; + fd_close(selfpipe_fd) ; sigprocmask(SIG_UNBLOCK, &selfpipe_caught, 0) ; sigemptyset(&selfpipe_caught) ; - fd_close(selfpipe_fd) ; selfpipe_fd = -1 ; + errno = e ; } #else #include +#include + +#include #include -#include + #include +#include #include -#include "selfpipe-internal.h" #include +#include "selfpipe-internal.h" void selfpipe_finish (void) { - sig_restoreto(&selfpipe_caught, SKALIBS_NSIG-1) ; - sigemptyset(&selfpipe_caught) ; + int e = errno ; + sigprocmask(SIG_BLOCK, &selfpipe_caught, 0) ; + sig_restoreto(&selfpipe_caught, SKALIBS_NSIG) ; fd_close(selfpipe[1]) ; fd_close(selfpipe[0]) ; + sigprocmask(SIG_UNBLOCK, &selfpipe_caught, 0) ; + sigemptyset(&selfpipe_caught) ; selfpipe[0] = selfpipe[1] = -1 ; + errno = e ; } #endif -- cgit v1.2.3