diff options
author | Alan Coopersmith <alan.coopersmith@sun.com> | 2008-11-05 18:25:57 -0800 |
---|---|---|
committer | Alan Coopersmith <alan.coopersmith@sun.com> | 2008-11-05 18:25:57 -0800 |
commit | c9051b684b524549eab6d5b88ee3e195a6f6fbe8 (patch) | |
tree | a3f35142083e2fd55cc731c3a48fd617979942c7 /os/utils.c | |
parent | d63ea510138c8b6de66184c78cda39ed9981fc1f (diff) |
Use OsSignal in Popen/Pclose to avoid SysV signal() stupidity
Diffstat (limited to 'os/utils.c')
-rw-r--r-- | os/utils.c | 8 |
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; } |