#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)
{
if (current_exec_path)
return current_exec_path;
- env = getenv("GIT_EXEC_PATH");
- if (env) {
+ env = getenv(EXEC_PATH_ENVIRONMENT);
+ if (env && *env) {
return env;
}
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) {
const char *exec_dir = paths[i];
const char *tmp;
- if (!exec_dir) continue;
+ if (!exec_dir || !*exec_dir) continue;
if (*exec_dir != '/') {
if (!getcwd(git_command, sizeof(git_command))) {
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;