summaryrefslogtreecommitdiff
path: root/run-command.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2015-09-03 19:17:49 -0700
committerJunio C Hamano <gitster@pobox.com>2015-09-03 19:17:49 -0700
commit6c0850f2dd994baaf64ef580e466706ce17a860f (patch)
tree4f4e8bc5af81c97e5aa9769c1e9975e59bb1340a /run-command.c
parentcbcd3dcaa8e504779523959ccf8771fdb32f2d2a (diff)
parentf4c3edc0b156362a92bf9de4f0ec794e90a757fc (diff)
downloadgit-6c0850f2dd994baaf64ef580e466706ce17a860f.tar.xz
Merge branch 'jk/long-error-messages' into maint
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 4d73e90fad..0d01671c1f 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]);