diff --git a/common-main.c b/common-main.c index 44a29e8b13cb5203e2d35c99b8e2b5fec49f6981..c654f95551c33d6b346ae7fe43a6cac987dd6b75 100644 --- a/common-main.c +++ b/common-main.c @@ -33,7 +33,7 @@ int main(int argc, const char **argv) git_setup_gettext(); - argv[0] = git_extract_argv0_path(argv[0]); + git_extract_argv0_path(argv[0]); restore_sigpipe_to_default(); diff --git a/exec_cmd.c b/exec_cmd.c index 9d5703a157fe8e9d8396e0771798e54dc5eea6eb..19ac2146d0c49be8f5ef3739664dc3105544b4c2 100644 --- a/exec_cmd.c +++ b/exec_cmd.c @@ -38,21 +38,17 @@ char *system_path(const char *path) return strbuf_detach(&d, NULL); } -const char *git_extract_argv0_path(const char *argv0) +void git_extract_argv0_path(const char *argv0) { const char *slash; if (!argv0 || !*argv0) - return NULL; + return; slash = find_last_dir_sep(argv0); - if (slash) { + if (slash) argv0_path = xstrndup(argv0, slash - argv0); - return slash + 1; - } - - return argv0; } void git_set_argv_exec_path(const char *exec_path) diff --git a/exec_cmd.h b/exec_cmd.h index 1f6b43378ba3866c07578b2222154e3a760440d1..ff0b48048a6ba82827b4d441654c34c21cfb7b9a 100644 --- a/exec_cmd.h +++ b/exec_cmd.h @@ -4,7 +4,7 @@ struct argv_array; extern void git_set_argv_exec_path(const char *exec_path); -extern const char *git_extract_argv0_path(const char *path); +extern void git_extract_argv0_path(const char *path); extern const char *git_exec_path(void); extern void setup_path(void); extern const char **prepare_git_cmd(struct argv_array *out, const char **argv); diff --git a/git.c b/git.c index 0f1937fd0c23da7c316540b8f9a6b05746011506..5e50a41285bd7129aa1e1373276a6f22206831a5 100644 --- a/git.c +++ b/git.c @@ -617,6 +617,11 @@ int cmd_main(int argc, const char **argv) cmd = argv[0]; if (!cmd) cmd = "git-help"; + else { + const char *slash = find_last_dir_sep(cmd); + if (slash) + cmd = slash + 1; + } trace_command_performance(argv);