Code

Merge branch 'jc/racy'
[git.git] / exec_cmd.c
index c1539d12ce9e350811b5b110206f5577a151e8ef..e30936d72cd48822b43ec7568d5fcafc76a7659e 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)
 {
@@ -96,9 +97,27 @@ int execv_git_cmd(const char **argv)
                tmp = argv[0];
                argv[0] = git_command;
 
+               if (getenv("GIT_TRACE")) {
+                       const char **p = argv;
+                       fputs("trace: exec:", stderr);
+                       while (*p) {
+                               fputc(' ', stderr);
+                               sq_quote_print(stderr, *p);
+                               ++p;
+                       }
+                       putc('\n', stderr);
+                       fflush(stderr);
+               }
+
                /* execve() can only ever return if it fails */
                execve(git_command, (char **)argv, environ);
 
+               if (getenv("GIT_TRACE")) {
+                       fprintf(stderr, "trace: exec failed: %s\n",
+                               strerror(errno));
+                       fflush(stderr);
+               }
+
                argv[0] = tmp;
        }
        return -1;