Skip to content
This repository was archived by the owner on Nov 9, 2017. It is now read-only.

Commit 29b6129

Browse files
kbleeskasal
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]>
1 parent 510e5db commit 29b6129

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
@@ -1053,10 +1053,9 @@ static pid_t mingw_spawnve_fd(const char *cmd, const char **argv, char **env,
10531053
return (pid_t)pi.dwProcessId;
10541054
}
10551055

1056-
static pid_t mingw_spawnve(const char *cmd, const char **argv, char **env,
1057-
int prepend_cmd)
1056+
static pid_t mingw_spawnv(const char *cmd, const char **argv, int prepend_cmd)
10581057
{
1059-
return mingw_spawnve_fd(cmd, argv, env, NULL, prepend_cmd, 0, 1, 2);
1058+
return mingw_spawnve_fd(cmd, argv, environ, NULL, prepend_cmd, 0, 1, 2);
10601059
}
10611060

10621061
pid_t mingw_spawnvpe(const char *cmd, const char **argv, char **env,
@@ -1098,7 +1097,7 @@ pid_t mingw_spawnvpe(const char *cmd, const char **argv, char **env,
10981097
return pid;
10991098
}
11001099

1101-
static int try_shell_exec(const char *cmd, char *const *argv, char **env)
1100+
static int try_shell_exec(const char *cmd, char *const *argv)
11021101
{
11031102
const char *interpr = parse_interpreter(cmd);
11041103
char **path;
@@ -1116,7 +1115,7 @@ static int try_shell_exec(const char *cmd, char *const *argv, char **env)
11161115
argv2 = xmalloc(sizeof(*argv) * (argc+1));
11171116
argv2[0] = (char *)cmd; /* full path to the script file */
11181117
memcpy(&argv2[1], &argv[1], sizeof(*argv) * argc);
1119-
pid = mingw_spawnve(prog, argv2, env, 1);
1118+
pid = mingw_spawnv(prog, argv2, 1);
11201119
if (pid >= 0) {
11211120
int status;
11221121
if (waitpid(pid, &status, 0) < 0)
@@ -1131,13 +1130,13 @@ static int try_shell_exec(const char *cmd, char *const *argv, char **env)
11311130
return pid;
11321131
}
11331132

1134-
static int mingw_execve(const char *cmd, char *const *argv, char *const *env)
1133+
int mingw_execv(const char *cmd, char *const *argv)
11351134
{
11361135
/* check if git_command is a shell script */
1137-
if (!try_shell_exec(cmd, argv, (char **)env)) {
1136+
if (!try_shell_exec(cmd, argv)) {
11381137
int pid, status;
11391138

1140-
pid = mingw_spawnve(cmd, (const char **)argv, (char **)env, 0);
1139+
pid = mingw_spawnv(cmd, (const char **)argv, 0);
11411140
if (pid < 0)
11421141
return -1;
11431142
if (waitpid(pid, &status, 0) < 0)
@@ -1153,7 +1152,7 @@ int mingw_execvp(const char *cmd, char *const *argv)
11531152
char *prog = path_lookup(cmd, path, 0);
11541153

11551154
if (prog) {
1156-
mingw_execve(prog, argv, environ);
1155+
mingw_execv(prog, argv);
11571156
free(prog);
11581157
} else
11591158
errno = ENOENT;
@@ -1162,12 +1161,6 @@ int mingw_execvp(const char *cmd, char *const *argv)
11621161
return -1;
11631162
}
11641163

1165-
int mingw_execv(const char *cmd, char *const *argv)
1166-
{
1167-
mingw_execve(cmd, argv, environ);
1168-
return -1;
1169-
}
1170-
11711164
int mingw_kill(pid_t pid, int sig)
11721165
{
11731166
if (pid > 0 && sig == SIGTERM) {

0 commit comments

Comments
 (0)