Win32: simplify internal mingw_spawn* APIs

The only public spawn function that needs to tweak the environment is mingw_spawnvpe (called from start_command). Nevertheless, all internal spawn* functions take an env parameter and needlessly pass the global char **environ around. Remove the env parameter where it's not needed. This removes the internal mingw_execve abstraction, which is no longer needed. Signed-off-by: Karsten Blees <blees@dcon.de> Signed-off-by: Stepan Kasal <kasal@ucw.cz> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Karsten Blees committed Nov 25, 2011 at 21:33 UTC 3e66e47b1b1baef859be79a12091fdbdd82492a8
1 file changed +8 -15
compat/mingw.c
+8 -15
@@ -941,10 +941,9 @@ static pid_t mingw_spawnve_fd(const char *cmd, const char **argv, char **env,
941 return (pid_t)pi.dwProcessId;
942 }
943
944 -static pid_t mingw_spawnve(const char *cmd, const char **argv, char **env,
945 - int prepend_cmd)
944 +static pid_t mingw_spawnv(const char *cmd, const char **argv, int prepend_cmd)
945 {
947 - return mingw_spawnve_fd(cmd, argv, env, NULL, prepend_cmd, 0, 1, 2);
946 + return mingw_spawnve_fd(cmd, argv, environ, NULL, prepend_cmd, 0, 1, 2);
947 }
948
949 pid_t mingw_spawnvpe(const char *cmd, const char **argv, char **env,
@@ -986,7 +985,7 @@ pid_t mingw_spawnvpe(const char *cmd, const char **argv, char **env,
985 return pid;
986 }
987
989 -static int try_shell_exec(const char *cmd, char *const *argv, char **env)
988 +static int try_shell_exec(const char *cmd, char *const *argv)
989 {
990 const char *interpr = parse_interpreter(cmd);
991 char **path;
@@ -1004,7 +1003,7 @@ static int try_shell_exec(const char *cmd, char *const *argv, char **env)
1003 argv2 = xmalloc(sizeof(*argv) * (argc+1));
1004 argv2[0] = (char *)cmd; /* full path to the script file */
1005 memcpy(&argv2[1], &argv[1], sizeof(*argv) * argc);
1007 - pid = mingw_spawnve(prog, argv2, env, 1);
1006 + pid = mingw_spawnv(prog, argv2, 1);
1007 if (pid >= 0) {
1008 int status;
1009 if (waitpid(pid, &status, 0) < 0)
@@ -1019,13 +1018,13 @@ static int try_shell_exec(const char *cmd, char *const *argv, char **env)
1018 return pid;
1019 }
1020
1022 -static int mingw_execve(const char *cmd, char *const *argv, char *const *env)
1021 +int mingw_execv(const char *cmd, char *const *argv)
1022 {
1023 /* check if git_command is a shell script */
1025 - if (!try_shell_exec(cmd, argv, (char **)env)) {
1024 + if (!try_shell_exec(cmd, argv)) {
1025 int pid, status;
1026
1028 - pid = mingw_spawnve(cmd, (const char **)argv, (char **)env, 0);
1027 + pid = mingw_spawnv(cmd, (const char **)argv, 0);
1028 if (pid < 0)
1029 return -1;
1030 if (waitpid(pid, &status, 0) < 0)
@@ -1041,7 +1040,7 @@ int mingw_execvp(const char *cmd, char *const *argv)
1040 char *prog = path_lookup(cmd, path, 0);
1041
1042 if (prog) {
1044 - mingw_execve(prog, argv, environ);
1043 + mingw_execv(prog, argv);
1044 free(prog);
1045 } else
1046 errno = ENOENT;
@@ -1050,12 +1049,6 @@ int mingw_execvp(const char *cmd, char *const *argv)
1049 return -1;
1050 }
1051
1053 -int mingw_execv(const char *cmd, char *const *argv)
1054 -{
1055 - mingw_execve(cmd, argv, environ);
1056 - return -1;
1057 -}
1058 -
1052 int mingw_kill(pid_t pid, int sig)
1053 {
1054 if (pid > 0 && sig == SIGTERM) {