aboutsummaryrefslogtreecommitdiff
path: root/toys/other
diff options
context:
space:
mode:
Diffstat (limited to 'toys/other')
-rw-r--r--toys/other/netcat.c4
-rw-r--r--toys/other/timeout.c7
2 files changed, 5 insertions, 6 deletions
diff --git a/toys/other/netcat.c b/toys/other/netcat.c
index d002b047..3c6f630b 100644
--- a/toys/other/netcat.c
+++ b/toys/other/netcat.c
@@ -140,7 +140,7 @@ void netcat_main(void)
// Do we need to return immediately because -l has arguments?
if ((toys.optflags & FLAG_l) && toys.optc) {
- if (fork()) goto cleanup;
+ if (xfork()) goto cleanup;
close(0);
close(1);
close(2);
@@ -149,7 +149,7 @@ void netcat_main(void)
for (;;) {
pid_t child = 0;
- // For -l, call accept from the _new_ thread.
+ // For -l, call accept from the _new_ process.
pollfds[0].fd = accept(sockfd, (struct sockaddr *)&address, &len);
if (pollfds[0].fd<0) perror_exit("accept");
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;
}
}