aboutsummaryrefslogtreecommitdiff
path: root/run-command.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2011-05-29 19:08:51 -0700
committerJunio C Hamano <gitster@pobox.com>2011-05-29 19:08:51 -0700
commit144dfc5c63dfe829aafdb2cba3bd549600b6008b (patch)
tree0f8f64b28722ff123c942552ec59265f330a9c0f /run-command.c
parent3c3e0b3c41f4c975828cf51d661614e45bf80dc0 (diff)
parenta111eb7808bfdb90286e54b9ccdaea4f3bec3102 (diff)
downloadgit-144dfc5c63dfe829aafdb2cba3bd549600b6008b.tar.gz
git-144dfc5c63dfe829aafdb2cba3bd549600b6008b.tar.xz
Merge branch 'jn/run-command-error-failure' into maint
* jn/run-command-error-failure: run-command: handle short writes and EINTR in die_child tests: check error message from run_command
Diffstat (limited to 'run-command.c')
-rw-r--r--run-command.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/run-command.c b/run-command.c
index f91e446c8..70e8a249d 100644
--- a/run-command.c
+++ b/run-command.c
@@ -67,21 +67,24 @@ static int child_notifier = -1;
static void notify_parent(void)
{
- ssize_t unused;
- unused = write(child_notifier, "", 1);
+ /*
+ * execvp failed. If possible, we'd like to let start_command
+ * know, so failures like ENOENT can be handled right away; but
+ * otherwise, finish_command will still report the error.
+ */
+ xwrite(child_notifier, "", 1);
}
static NORETURN void die_child(const char *err, va_list params)
{
char msg[4096];
- ssize_t unused;
int len = vsnprintf(msg, sizeof(msg), err, params);
if (len > sizeof(msg))
len = sizeof(msg);
- unused = write(child_err, "fatal: ", 7);
- unused = write(child_err, msg, len);
- unused = write(child_err, "\n", 1);
+ write_in_full(child_err, "fatal: ", 7);
+ write_in_full(child_err, msg, len);
+ write_in_full(child_err, "\n", 1);
exit(128);
}
#endif