#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)
{
return current_exec_path;
env = getenv("GIT_EXEC_PATH");
- if (env) {
+ if (env && *env) {
return env;
}
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;