Skip to content

Commit 3e66e47

Browse files
kbleesgitster
authored andcommitted
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 <[email protected]> Signed-off-by: Stepan Kasal <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 570f1e6 commit 3e66e47

File tree

1 file changed

+8
-15
lines changed

1 file changed

+8
-15
lines changed

compat/mingw.c

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -941,10 +941,9 @@ static pid_t mingw_spawnve_fd(const char *cmd, const char **argv, char **env,
941941
return (pid_t)pi.dwProcessId;
942942
}
943943

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)
946945
{
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);
948947
}
949948

950949
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,
986985
return pid;
987986
}
988987

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)
990989
{
991990
const char *interpr = parse_interpreter(cmd);
992991
char **path;
@@ -1004,7 +1003,7 @@ static int try_shell_exec(const char *cmd, char *const *argv, char **env)
10041003
argv2 = xmalloc(sizeof(*argv) * (argc+1));
10051004
argv2[0] = (char *)cmd; /* full path to the script file */
10061005
memcpy(&argv2[1], &argv[1], sizeof(*argv) * argc);
1007-
pid = mingw_spawnve(prog, argv2, env, 1);
1006+
pid = mingw_spawnv(prog, argv2, 1);
10081007
if (pid >= 0) {
10091008
int status;
10101009
if (waitpid(pid, &status, 0) < 0)
@@ -1019,13 +1018,13 @@ static int try_shell_exec(const char *cmd, char *const *argv, char **env)
10191018
return pid;
10201019
}
10211020

1022-
static int mingw_execve(const char *cmd, char *const *argv, char *const *env)
1021+
int mingw_execv(const char *cmd, char *const *argv)
10231022
{
10241023
/* check if git_command is a shell script */
1025-
if (!try_shell_exec(cmd, argv, (char **)env)) {
1024+
if (!try_shell_exec(cmd, argv)) {
10261025
int pid, status;
10271026

1028-
pid = mingw_spawnve(cmd, (const char **)argv, (char **)env, 0);
1027+
pid = mingw_spawnv(cmd, (const char **)argv, 0);
10291028
if (pid < 0)
10301029
return -1;
10311030
if (waitpid(pid, &status, 0) < 0)
@@ -1041,7 +1040,7 @@ int mingw_execvp(const char *cmd, char *const *argv)
10411040
char *prog = path_lookup(cmd, path, 0);
10421041

10431042
if (prog) {
1044-
mingw_execve(prog, argv, environ);
1043+
mingw_execv(prog, argv);
10451044
free(prog);
10461045
} else
10471046
errno = ENOENT;
@@ -1050,12 +1049,6 @@ int mingw_execvp(const char *cmd, char *const *argv)
10501049
return -1;
10511050
}
10521051

1053-
int mingw_execv(const char *cmd, char *const *argv)
1054-
{
1055-
mingw_execve(cmd, argv, environ);
1056-
return -1;
1057-
}
1058-
10591052
int mingw_kill(pid_t pid, int sig)
10601053
{
10611054
if (pid > 0 && sig == SIGTERM) {

0 commit comments

Comments
 (0)