error_routine: use parent's stderr if exec fails
The new process's error output may be redirected elsewhere, but if the exec fails, output should still go to the parent's stderr. This has already been done for the die_routine. Do the same for error_routine. Signed-off-by: Clemens Buchacher <drizzd@aon.at> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
2579e1d293
commit
3bc4181fde
@ -77,16 +77,14 @@ static void notify_parent(void)
|
||||
|
||||
static NORETURN void die_child(const char *err, va_list params)
|
||||
{
|
||||
char msg[4096];
|
||||
int len = vsnprintf(msg, sizeof(msg), err, params);
|
||||
if (len > sizeof(msg))
|
||||
len = sizeof(msg);
|
||||
|
||||
write_in_full(child_err, "fatal: ", 7);
|
||||
write_in_full(child_err, msg, len);
|
||||
write_in_full(child_err, "\n", 1);
|
||||
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)
|
||||
@ -217,6 +215,7 @@ fail_pipe:
|
||||
set_cloexec(child_err);
|
||||
}
|
||||
set_die_routine(die_child);
|
||||
set_error_routine(error_child);
|
||||
|
||||
close(notify_pipe[0]);
|
||||
set_cloexec(notify_pipe[1]);
|
||||
|
Reference in New Issue
Block a user