summaryrefslogtreecommitdiff
path: root/usage.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2017-06-13 20:26:59 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-06-13 20:27:00 (GMT)
commite350625b68cf747e4933239735ceb111f4375a83 (patch)
treec7e292cbe43023dbe625dbb4655c26a7f11d7ee6 /usage.c
parent7a190a215dbcf782c33ed531104389de8504e29d (diff)
parente3f43ce765c38f4be94239d07c8c3c596780c514 (diff)
downloadgit-e350625b68cf747e4933239735ceb111f4375a83.zip
git-e350625b68cf747e4933239735ceb111f4375a83.tar.gz
git-e350625b68cf747e4933239735ceb111f4375a83.tar.bz2
Merge branch 'bw/forking-and-threading' into maint
The "run-command" API implementation has been made more robust against dead-locking in a threaded environment. * bw/forking-and-threading: usage.c: drop set_error_handle() run-command: restrict PATH search to executable files run-command: expose is_executable function run-command: block signals between fork and execve run-command: add note about forking and threading run-command: handle dup2 and close errors in child run-command: eliminate calls to error handling functions in child run-command: don't die in child when duping /dev/null run-command: prepare child environment before forking string-list: add string_list_remove function run-command: use the async-signal-safe execv instead of execvp run-command: prepare command before forking t0061: run_command executes scripts without a #! line t5550: use write_script to generate post-update hook
Diffstat (limited to 'usage.c')
-rw-r--r--usage.c10
1 files changed, 1 insertions, 9 deletions
diff --git a/usage.c b/usage.c
index 1f63e03..2f87ca6 100644
--- a/usage.c
+++ b/usage.c
@@ -6,12 +6,9 @@
#include "git-compat-util.h"
#include "cache.h"
-static FILE *error_handle;
-
void vreportf(const char *prefix, const char *err, va_list params)
{
char msg[4096];
- FILE *fh = error_handle ? error_handle : stderr;
char *p;
vsnprintf(msg, sizeof(msg), err, params);
@@ -19,7 +16,7 @@ void vreportf(const char *prefix, const char *err, va_list params)
if (iscntrl(*p) && *p != '\t' && *p != '\n')
*p = '?';
}
- fprintf(fh, "%s%s\n", prefix, msg);
+ fprintf(stderr, "%s%s\n", prefix, msg);
}
static NORETURN void usage_builtin(const char *err, va_list params)
@@ -88,11 +85,6 @@ void set_die_is_recursing_routine(int (*routine)(void))
die_is_recursing = routine;
}
-void set_error_handle(FILE *fh)
-{
- error_handle = fh;
-}
-
void NORETURN usagef(const char *err, ...)
{
va_list params;