summaryrefslogtreecommitdiff
path: root/Src/signals.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/signals.c')
-rw-r--r--Src/signals.c33
1 files changed, 13 insertions, 20 deletions
diff --git a/Src/signals.c b/Src/signals.c
index 8f5bc49b8..ba01e2bc9 100644
--- a/Src/signals.c
+++ b/Src/signals.c
@@ -200,15 +200,6 @@ signal_mask(int sig)
* set. Return the old signal set. */
/**/
-#ifdef POSIX_SIGNALS
-
-/**/
-mod_export sigset_t dummy_sigset1, dummy_sigset2;
-
-/**/
-#else
-
-/**/
#ifndef BSD_SIGNALS
sigset_t
@@ -216,7 +207,11 @@ signal_block(sigset_t set)
{
sigset_t oset;
-#ifdef SYSV_SIGNALS
+#ifdef POSIX_SIGNALS
+ sigprocmask(SIG_BLOCK, &set, &oset);
+
+#else
+# ifdef SYSV_SIGNALS
int i;
oset = blocked_set;
@@ -226,7 +221,7 @@ signal_block(sigset_t set)
sighold(i);
}
}
-#else /* NO_SIGNAL_BLOCKING */
+# else /* NO_SIGNAL_BLOCKING */
/* We will just ignore signals if the system doesn't have *
* the ability to block them. */
int i;
@@ -238,7 +233,8 @@ signal_block(sigset_t set)
signal_ignore(i);
}
}
-#endif /* SYSV_SIGNALS */
+# endif /* SYSV_SIGNALS */
+#endif /* POSIX_SIGNALS */
return oset;
}
@@ -246,19 +242,17 @@ signal_block(sigset_t set)
/**/
#endif /* BSD_SIGNALS */
-/**/
-#endif /* POSIX_SIGNALS */
-
/* Unblock the signals in the given signal *
* set. Return the old signal set. */
-#ifndef POSIX_SIGNALS
-
sigset_t
signal_unblock(sigset_t set)
{
sigset_t oset;
-
+
+#ifdef POSIX_SIGNALS
+ sigprocmask(SIG_UNBLOCK, &set, &oset);
+#else
# ifdef BSD_SIGNALS
sigfillset(&oset);
oset = sigsetmask(oset);
@@ -288,12 +282,11 @@ signal_unblock(sigset_t set)
}
# endif /* SYSV_SIGNALS */
# endif /* BSD_SIGNALS */
+#endif /* POSIX_SIGNALS */
return oset;
}
-#endif /* POSIX_SIGNALS */
-
/* set the process signal mask to *
* be the given signal mask */