diff options
author | Svante Signell <svante.signell@gmail.com> | 2014-08-19 19:52:01 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2014-08-19 19:54:55 +0200 |
commit | d324631edd3c2549a8cda05c2fc56ceea7fe0593 (patch) | |
tree | c11f12ae0e0d34011d0c017cf1e5c410ad8bfc76 | |
parent | c025e6a9881527d5b0e5b2398278410fb4e42138 (diff) |
Make settrans return value returned by chroot command
* utils/settrans.c (main): In case of chroot_command, get status from waitpid()
call, and call error() appropriately.
-rw-r--r-- | utils/settrans.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/utils/settrans.c b/utils/settrans.c index 84b271ab..cd40c56f 100644 --- a/utils/settrans.c +++ b/utils/settrans.c @@ -310,8 +310,9 @@ main(int argc, char *argv[]) if (chroot_command) { - pid_t pid; - switch ((pid = fork ())) + pid_t child; + int status; + switch ((child = fork ())) { case -1: error (6, errno, "fork"); @@ -348,12 +349,19 @@ main(int argc, char *argv[]) break; default: /* Parent. */ - if (waitpid (pid, NULL, 0) == -1) - error (8, errno, "waitpid"); + if (waitpid (child, &status, 0) != child) + error (8, errno, "waitpid on %d", child); err = fsys_goaway (active_control, goaway_flags); if (err && err != EBUSY) error (9, err, "fsys_goaway"); + + if (WIFSIGNALED (status)) + error (WTERMSIG (status) + 128, 0, + "%s for child %d", strsignal (WTERMSIG (status)), child); + if (WEXITSTATUS (status) != 0) + error (WEXITSTATUS (status), 0, + "Error %d for child %d", WEXITSTATUS (status), child); } } |