X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=exec_cmd.c;h=9b74ed2f42ad9a452f5a1d9ab55d5ca1e1de2594;hb=7051c3b1294a110a862a7b48e983490fba32389f;hp=c1539d12ce9e350811b5b110206f5577a151e8ef;hpb=210a0be504829bad5a2821488d3c25cc406fed4a;p=git.git diff --git a/exec_cmd.c b/exec_cmd.c index c1539d12c..9b74ed2f4 100644 --- a/exec_cmd.c +++ b/exec_cmd.c @@ -1,10 +1,11 @@ #include "cache.h" #include "exec_cmd.h" +#include "quote.h" #define MAX_ARGS 32 extern char **environ; static const char *builtin_exec_path = GIT_EXEC_PATH; -static const char *current_exec_path = NULL; +static const char *current_exec_path; void git_set_exec_path(const char *exec_path) { @@ -20,7 +21,7 @@ const char *git_exec_path(void) if (current_exec_path) return current_exec_path; - env = getenv("GIT_EXEC_PATH"); + env = getenv(EXEC_PATH_ENVIRONMENT); if (env && *env) { return env; } @@ -34,7 +35,7 @@ int execv_git_cmd(const char **argv) char git_command[PATH_MAX + 1]; int i; const char *paths[] = { current_exec_path, - getenv("GIT_EXEC_PATH"), + getenv(EXEC_PATH_ENVIRONMENT), builtin_exec_path }; for (i = 0; i < ARRAY_SIZE(paths); ++i) { @@ -55,7 +56,7 @@ int execv_git_cmd(const char **argv) len = strlen(git_command); /* Trivial cleanup */ - while (!strncmp(exec_dir, "./", 2)) { + while (!prefixcmp(exec_dir, "./")) { exec_dir += 2; while (*exec_dir == '/') exec_dir++; @@ -96,9 +97,13 @@ int execv_git_cmd(const char **argv) tmp = argv[0]; argv[0] = git_command; + trace_argv_printf(argv, -1, "trace: exec:"); + /* execve() can only ever return if it fails */ execve(git_command, (char **)argv, environ); + trace_printf("trace: exec failed: %s\n", strerror(errno)); + argv[0] = tmp; } return -1;