Refactor, adding prepare_git_cmd(const char **argv)
authorSteffen Prohaska <prohaska@zib.de>
Mon, 28 Jul 2008 05:50:27 +0000 (07:50 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 29 Jul 2008 06:02:11 +0000 (23:02 -0700)
prepare_git_cmd(const char **argv) adds a first entry "git" to
the array argv.  The new array is allocated on the heap.  It's
the caller's responsibility to release it with free().  The code
was already present in execv_git_cmd() but could not be used from
outside.  Now it can also be called for preparing the command list
in the MinGW codepath in run-command.c.

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
exec_cmd.c
exec_cmd.h

index 0ed768ddc0ac321f0d8dcf8b501412a0b440c31e..ce6741eb682b59ad638c7bee6ca31e2fcd53f281 100644 (file)
@@ -78,7 +78,7 @@ void setup_path(void)
        strbuf_release(&new_path);
 }
 
-int execv_git_cmd(const char **argv)
+const char **prepare_git_cmd(const char **argv)
 {
        int argc;
        const char **nargv;
@@ -91,6 +91,11 @@ int execv_git_cmd(const char **argv)
        for (argc = 0; argv[argc]; argc++)
                nargv[argc + 1] = argv[argc];
        nargv[argc + 1] = NULL;
+       return nargv;
+}
+
+int execv_git_cmd(const char **argv) {
+       const char **nargv = prepare_git_cmd(argv);
        trace_argv_printf(nargv, "trace: exec:");
 
        /* execvp() can only ever return if it fails */
index 0c46cd5636e1bab445b91c6407210afcb5ccb772..594f961387240c221020c9ea0bccd8a39ff69595 100644 (file)
@@ -5,6 +5,7 @@ extern void git_set_argv_exec_path(const char *exec_path);
 extern void git_set_argv0_path(const char *path);
 extern const char* git_exec_path(void);
 extern void setup_path(void);
+extern const char **prepare_git_cmd(const char **argv);
 extern int execv_git_cmd(const char **argv); /* NULL terminated */
 extern int execl_git_cmd(const char *cmd, ...);
 extern const char *system_path(const char *path);