summaryrefslogtreecommitdiff
path: root/pp_sys.c
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2003-02-24 20:04:36 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2003-02-24 20:04:36 +0000
commit4ffa73a366885f682ceccdeee45e43075e0c312e (patch)
tree446e9e27c998f37145504dca4df0241df75e5f90 /pp_sys.c
parent2fb44b4522b8956ab337b2f83a5fe619b0773788 (diff)
downloadperl-4ffa73a366885f682ceccdeee45e43075e0c312e.tar.gz
PERL_SIGNALS=unsafe enables the old unsafe/immediate signals.
p4raw-id: //depot/perl@18766
Diffstat (limited to 'pp_sys.c')
-rw-r--r--pp_sys.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/pp_sys.c b/pp_sys.c
index b14dd7719e..179bbc845e 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -3963,13 +3963,14 @@ PP(pp_wait)
Pid_t childpid;
int argflags;
-#ifdef PERL_OLD_SIGNALS
- childpid = wait4pid(-1, &argflags, 0);
-#else
- while ((childpid = wait4pid(-1, &argflags, 0)) == -1 && errno == EINTR) {
- PERL_ASYNC_CHECK();
+ if (PL_signals & PERL_SIGNALS_UNSAFE_FLAG)
+ childpid = wait4pid(-1, &argflags, 0);
+ else {
+ while ((childpid = wait4pid(-1, &argflags, 0)) == -1 &&
+ errno == EINTR) {
+ PERL_ASYNC_CHECK();
+ }
}
-#endif
# if defined(USE_ITHREADS) && defined(PERL_IMPLICIT_SYS)
/* 0 and -1 are both error returns (the former applies to WNOHANG case) */
STATUS_NATIVE_SET((childpid && childpid != -1) ? argflags : -1);
@@ -3993,13 +3994,14 @@ PP(pp_waitpid)
optype = POPi;
childpid = TOPi;
-#ifdef PERL_OLD_SIGNALS
- childpid = wait4pid(childpid, &argflags, optype);
-#else
- while ((childpid = wait4pid(childpid, &argflags, optype)) == -1 && errno == EINTR) {
- PERL_ASYNC_CHECK();
+ if (PL_signals & PERL_SIGNALS_UNSAFE_FLAG)
+ childpid = wait4pid(childpid, &argflags, optype);
+ else {
+ while ((childpid = wait4pid(childpid, &argflags, optype)) == -1 &&
+ errno == EINTR) {
+ PERL_ASYNC_CHECK();
+ }
}
-#endif
# if defined(USE_ITHREADS) && defined(PERL_IMPLICIT_SYS)
/* 0 and -1 are both error returns (the former applies to WNOHANG case) */
STATUS_NATIVE_SET((childpid && childpid != -1) ? argflags : -1);