aboutsummaryrefslogtreecommitdiff
path: root/toys/other/timeout.c
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2014-05-31 12:33:24 -0500
committerRob Landley <rob@landley.net>2014-05-31 12:33:24 -0500
commitd8872c43b48eae5501998a4e5a84337017d8fbe6 (patch)
tree8360d8673d0ed40b02f9d58bdf74b639f6e780f9 /toys/other/timeout.c
parentb0d97a0059555cb0e7e0009b72c038aa67aaa769 (diff)
downloadtoybox-d8872c43b48eae5501998a4e5a84337017d8fbe6.tar.gz
Introduce xfork() and make commands use it, and make some WEXITSTATUS() use WIFEXITED() and WTERMSIG()+127.
Diffstat (limited to 'toys/other/timeout.c')
-rw-r--r--toys/other/timeout.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/toys/other/timeout.c b/toys/other/timeout.c
index 4b8a87df..f8acabf5 100644
--- a/toys/other/timeout.c
+++ b/toys/other/timeout.c
@@ -60,15 +60,14 @@ 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 = fork())) xexec_optargs(1);
+ if (!(TT.pid = xfork())) xexec_optargs(1);
else {
int status;
signal(SIGALRM, handler);
setitimer(ITIMER_REAL, &TT.itv, (void *)&toybuf);
while (-1 == waitpid(TT.pid, &status, 0) && errno == EINTR);
- if (WIFEXITED(status)) toys.exitval = WEXITSTATUS(status);
- else if (WIFSIGNALED(status)) toys.exitval = WTERMSIG(status);
- else toys.exitval = 1;
+ toys.exitval = WIFEXITED(status)
+ ? WEXITSTATUS(status) : WTERMSIG(status) + 127;
}
}