summaryrefslogtreecommitdiff
path: root/util.c
diff options
context:
space:
mode:
authorNick Ing-Simmons <nik@tiuk.ti.com>2001-01-17 22:41:10 +0000
committerNick Ing-Simmons <nik@tiuk.ti.com>2001-01-17 22:41:10 +0000
commit0a8e0eff0300ee74cef43b18ff11d05a6376450e (patch)
treeb7b923b1cedae412a37ad43239ef3327d1ca1c52 /util.c
parent9b5a166df944a05919fc72a0c76a3ff67c30dc35 (diff)
downloadperl-0a8e0eff0300ee74cef43b18ff11d05a6376450e.tar.gz
"Safe" signals - trial implementation.
gv.c tweaked to zero PL_sig_pend array perlio.c tweaked to PERL_ASYNC_CHECK() on EINTR util.c tweaked to not set SA_RESTART to give perlio.c a chance. Odd thing is that it "works" with PERLIO=stdio as well (linux). p4raw-id: //depot/perlio@8467
Diffstat (limited to 'util.c')
-rw-r--r--util.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/util.c b/util.c
index b163b05361..ca7cacfea6 100644
--- a/util.c
+++ b/util.c
@@ -2548,8 +2548,10 @@ Perl_rsignal(pTHX_ int signo, Sighandler_t handler)
sigemptyset(&act.sa_mask);
act.sa_flags = 0;
#ifdef SA_RESTART
+#if !defined(USE_PERLIO) || defined(PERL_OLD_SIGNALS)
act.sa_flags |= SA_RESTART; /* SVR4, 4.3+BSD */
#endif
+#endif
#ifdef SA_NOCLDWAIT
if (signo == SIGCHLD && handler == (Sighandler_t)SIG_IGN)
act.sa_flags |= SA_NOCLDWAIT;
@@ -2580,8 +2582,10 @@ Perl_rsignal_save(pTHX_ int signo, Sighandler_t handler, Sigsave_t *save)
sigemptyset(&act.sa_mask);
act.sa_flags = 0;
#ifdef SA_RESTART
+#if !defined(USE_PERLIO) || defined(PERL_OLD_SIGNALS)
act.sa_flags |= SA_RESTART; /* SVR4, 4.3+BSD */
#endif
+#endif
#ifdef SA_NOCLDWAIT
if (signo == SIGCHLD && handler == (Sighandler_t)SIG_IGN)
act.sa_flags |= SA_NOCLDWAIT;