Code

gitweb: spell "blame --porcelain" with -p
[git.git] / exec_cmd.c
index 12eb36494ca467169aff4db35335b3fdadd4cbee..5d6a1247b4a1955dffae2b52da064a6eb489d83b 100644 (file)
@@ -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)
 {
@@ -21,7 +22,7 @@ const char *git_exec_path(void)
                return current_exec_path;
 
        env = getenv("GIT_EXEC_PATH");
-       if (env) {
+       if (env && *env) {
                return env;
        }
 
@@ -43,7 +44,7 @@ int execv_git_cmd(const char **argv)
                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))) {
@@ -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;