summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@sun.com>2008-11-05 18:25:57 -0800
committerAlan Coopersmith <alan.coopersmith@sun.com>2008-11-05 18:25:57 -0800
commitc9051b684b524549eab6d5b88ee3e195a6f6fbe8 (patch)
treea3f35142083e2fd55cc731c3a48fd617979942c7
parentd63ea510138c8b6de66184c78cda39ed9981fc1f (diff)
Use OsSignal in Popen/Pclose to avoid SysV signal() stupidity
-rw-r--r--os/utils.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/os/utils.c b/os/utils.c
index f0bb717b4..b1009494b 100644
--- a/os/utils.c
+++ b/os/utils.c
@@ -1393,7 +1393,7 @@ static struct pid {
int pid;
} *pidlist;
-void (*old_alarm)(int) = NULL; /* XXX horrible awful hack */
+OsSigHandlerPtr old_alarm = NULL; /* XXX horrible awful hack */
pointer
Popen(char *command, char *type)
@@ -1417,7 +1417,7 @@ Popen(char *command, char *type)
}
/* Ignore the smart scheduler while this is going on */
- old_alarm = signal(SIGALRM, SIG_IGN);
+ old_alarm = OsSignal(SIGALRM, SIG_IGN);
if (old_alarm == SIG_ERR) {
perror("signal");
return NULL;
@@ -1428,7 +1428,7 @@ Popen(char *command, char *type)
close(pdes[0]);
close(pdes[1]);
xfree(cur);
- if (signal(SIGALRM, old_alarm) == SIG_ERR)
+ if (OsSignal(SIGALRM, old_alarm) == SIG_ERR)
perror("signal");
return NULL;
case 0: /* child */
@@ -1605,7 +1605,7 @@ Pclose(pointer iop)
/* allow EINTR again */
OsReleaseSignals ();
- if (old_alarm && signal(SIGALRM, old_alarm) == SIG_ERR) {
+ if (old_alarm && OsSignal(SIGALRM, old_alarm) == SIG_ERR) {
perror("signal");
return -1;
}