summaryrefslogtreecommitdiff
path: root/run-command.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2015-08-25 14:57:06 -0700
committerJunio C Hamano <gitster@pobox.com>2015-08-25 14:57:06 -0700
commit1302c9f514686e32065130ec9a80eb0db224e819 (patch)
treea9891d1a8906165ccabc6e005da5eb4fda1306d7 /run-command.c
parentb590720f2cd3638930847f5abf646275caf8d334 (diff)
parentf4c3edc0b156362a92bf9de4f0ec794e90a757fc (diff)
downloadgit-1302c9f514686e32065130ec9a80eb0db224e819.tar.gz
Merge branch 'jk/long-error-messages'
The codepath to produce error messages had a hard-coded limit to the size of the message, primarily to avoid memory allocation while calling die(). * jk/long-error-messages: vreportf: avoid intermediate buffer vreportf: report to arbitrary filehandles
Diffstat (limited to 'run-command.c')
-rw-r--r--run-command.c17
1 files changed, 2 insertions, 15 deletions
diff --git a/run-command.c b/run-command.c
index 28e1d55cb9..3277cf797e 100644
--- a/run-command.c
+++ b/run-command.c
@@ -200,7 +200,6 @@ static int execv_shell_cmd(const char **argv)
#endif
#ifndef GIT_WINDOWS_NATIVE
-static int child_err = 2;
static int child_notifier = -1;
static void notify_parent(void)
@@ -212,17 +211,6 @@ static void notify_parent(void)
*/
xwrite(child_notifier, "", 1);
}
-
-static NORETURN void die_child(const char *err, va_list params)
-{
- vwritef(child_err, "fatal: ", err, params);
- exit(128);
-}
-
-static void error_child(const char *err, va_list params)
-{
- vwritef(child_err, "error: ", err, params);
-}
#endif
static inline void set_cloexec(int fd)
@@ -362,11 +350,10 @@ fail_pipe:
* in subsequent call paths use the parent's stderr.
*/
if (cmd->no_stderr || need_err) {
- child_err = dup(2);
+ int child_err = dup(2);
set_cloexec(child_err);
+ set_error_handle(fdopen(child_err, "w"));
}
- set_die_routine(die_child);
- set_error_routine(error_child);
close(notify_pipe[0]);
set_cloexec(notify_pipe[1]);