diff options
Diffstat (limited to 'toys/pending/useradd.c')
-rw-r--r-- | toys/pending/useradd.c | 8 |
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 |