aboutsummaryrefslogtreecommitdiff
path: root/toys/other/timeout.c
diff options
context:
space:
mode:
Diffstat (limited to 'toys/other/timeout.c')
-rw-r--r--toys/other/timeout.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/toys/other/timeout.c b/toys/other/timeout.c
index bd716e63..0e912f7c 100644
--- a/toys/other/timeout.c
+++ b/toys/other/timeout.c
@@ -62,14 +62,10 @@ void timeout_main(void)
if (TT.s_signal && -1 == (TT.nextsig = sig_to_num(TT.s_signal)))
error_exit("bad -s: '%s'", TT.s_signal);
- if (!(TT.pid = xvfork())) xexec(toys.optargs+1);
+ if (!(TT.pid = XVFORK())) xexec(toys.optargs+1);
else {
- int status;
-
xsignal(SIGALRM, handler);
setitimer(ITIMER_REAL, &TT.itv, (void *)toybuf);
- while (-1 == waitpid(TT.pid, &status, 0) && errno == EINTR);
- toys.exitval = WIFEXITED(status)
- ? WEXITSTATUS(status) : WTERMSIG(status) + 127;
+ toys.exitval = xwaitpid(TT.pid);
}
}