aboutsummaryrefslogtreecommitdiff
path: root/toys/pending/useradd.c
diff options
context:
space:
mode:
Diffstat (limited to 'toys/pending/useradd.c')
-rw-r--r--toys/pending/useradd.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/toys/pending/useradd.c b/toys/pending/useradd.c
index 450e021a..99e2530f 100644
--- a/toys/pending/useradd.c
+++ b/toys/pending/useradd.c
@@ -58,12 +58,12 @@ static char* get_shell(void)
static int exec_wait(char **args)
{
int status = 0;
- pid_t pid = fork();
+ pid_t pid = xfork();
if (!pid) xexec(args);
- else if (pid > 0) waitpid(pid, &status, 0);
- else perror_exit("fork failed");
- return WEXITSTATUS(status);
+ else if waitpid(pid, &status, 0);
+
+ return WIFEXITED(status) ? WEXITSTATUS(status) : WTERMSIG(status)+127;
}
/* create_copy_skel(), This function will create the home directory of the