[PATCH 1/4] teach wait_or_whine a "quiet" mode
- From
Jeff King <peff@peff.net>
- Date
- Mar 31, 2011, 18:43 UTC
- Message-ID
- <20110331184342.GA16906@sigill.intra.peff.net>
- In-Reply-To
- <20110331184243.GA12027@sigill.intra.peff.net>
The wait_or_whine function will complain to stderr in a few cases:
1. We fail to actually waitpid() correctly.
2. The child died of a signal.
3. The child returned exit code 127, indicating a missing
command to exec after forking.We already have a silent_exec_failure flag to silence (3). Let's convert that into a "quiet" flag to also silence (2). This shouldn't result in signal failure being silent for existing users of silent_exec_failure, since they already will need to be checking the return code and complaining for the case of a non-zero exit code.
For (1), it probably makes sense to always complain about a failure to correctly wait, so let's not quiet that.
Signed-off-by: Jeff King <peff@peff.net> --- run-command.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/run-command.c b/run-command.c index 0d95340..0d5626a 100644 --- a/run-command.c +++ b/run-command.c @@ -240,7 +240,7 @@ fail_pipe: return 0; } -static int wait_or_whine(pid_t pid, const char *argv0, int silent_exec_failure) +static int wait_or_whine(pid_t pid, const char *argv0, int quiet) { int status, code = -1; pid_t waiting; @@ -256,7 +256,8 @@ static int wait_or_whine(pid_t pid, const char *argv0, int silent_exec_failure) error("waitpid is confused (%s)", argv0); } else if (WIFSIGNALED(status)) { code = WTERMSIG(status); - error("%s died of signal %d", argv0, code); + if (!quiet) + error("%s died of signal %d", argv0, code); /* * This return value is chosen so that code & 0xff * mimics the exit code that a POSIX shell would report for @@ -271,7 +272,7 @@ static int wait_or_whine(pid_t pid, const char *argv0, int silent_exec_failure) if (code == 127) { code = -1; failed_errno = ENOENT; - if (!silent_exec_failure) + if (!quiet) error("cannot run %s: %s", argv0, strerror(ENOENT)); }
-- 1.7.4.13.g8566c