mirror of
https://github.com/git/git.git
synced 2026-02-07 08:15:23 +00:00
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>
This commit is contained in:
committed by
Stepan Kasal
parent
75f1827d47
commit
45f09a0865
@@ -1053,10 +1053,9 @@ static pid_t mingw_spawnve_fd(const char *cmd, const char **argv, char **env,
|
||||
return (pid_t)pi.dwProcessId;
|
||||
}
|
||||
|
||||
static pid_t mingw_spawnve(const char *cmd, const char **argv, char **env,
|
||||
int prepend_cmd)
|
||||
static pid_t mingw_spawnv(const char *cmd, const char **argv, int prepend_cmd)
|
||||
{
|
||||
return mingw_spawnve_fd(cmd, argv, env, NULL, prepend_cmd, 0, 1, 2);
|
||||
return mingw_spawnve_fd(cmd, argv, environ, NULL, prepend_cmd, 0, 1, 2);
|
||||
}
|
||||
|
||||
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,
|
||||
return pid;
|
||||
}
|
||||
|
||||
static int try_shell_exec(const char *cmd, char *const *argv, char **env)
|
||||
static int try_shell_exec(const char *cmd, char *const *argv)
|
||||
{
|
||||
const char *interpr = parse_interpreter(cmd);
|
||||
char **path;
|
||||
@@ -1116,7 +1115,7 @@ static int try_shell_exec(const char *cmd, char *const *argv, char **env)
|
||||
argv2 = xmalloc(sizeof(*argv) * (argc+1));
|
||||
argv2[0] = (char *)cmd; /* full path to the script file */
|
||||
memcpy(&argv2[1], &argv[1], sizeof(*argv) * argc);
|
||||
pid = mingw_spawnve(prog, argv2, env, 1);
|
||||
pid = mingw_spawnv(prog, argv2, 1);
|
||||
if (pid >= 0) {
|
||||
int status;
|
||||
if (waitpid(pid, &status, 0) < 0)
|
||||
@@ -1131,13 +1130,13 @@ static int try_shell_exec(const char *cmd, char *const *argv, char **env)
|
||||
return pid;
|
||||
}
|
||||
|
||||
static int mingw_execve(const char *cmd, char *const *argv, char *const *env)
|
||||
int mingw_execv(const char *cmd, char *const *argv)
|
||||
{
|
||||
/* check if git_command is a shell script */
|
||||
if (!try_shell_exec(cmd, argv, (char **)env)) {
|
||||
if (!try_shell_exec(cmd, argv)) {
|
||||
int pid, status;
|
||||
|
||||
pid = mingw_spawnve(cmd, (const char **)argv, (char **)env, 0);
|
||||
pid = mingw_spawnv(cmd, (const char **)argv, 0);
|
||||
if (pid < 0)
|
||||
return -1;
|
||||
if (waitpid(pid, &status, 0) < 0)
|
||||
@@ -1153,7 +1152,7 @@ int mingw_execvp(const char *cmd, char *const *argv)
|
||||
char *prog = path_lookup(cmd, path, 0);
|
||||
|
||||
if (prog) {
|
||||
mingw_execve(prog, argv, environ);
|
||||
mingw_execv(prog, argv);
|
||||
free(prog);
|
||||
} else
|
||||
errno = ENOENT;
|
||||
@@ -1162,12 +1161,6 @@ int mingw_execvp(const char *cmd, char *const *argv)
|
||||
return -1;
|
||||
}
|
||||
|
||||
int mingw_execv(const char *cmd, char *const *argv)
|
||||
{
|
||||
mingw_execve(cmd, argv, environ);
|
||||
return -1;
|
||||
}
|
||||
|
||||
int mingw_kill(pid_t pid, int sig)
|
||||
{
|
||||
if (pid > 0 && sig == SIGTERM) {
|
||||
|
||||
Reference in New Issue
Block a user