Fix invocation of external git commands with arguments with spaces.

If an external git command (not a shell script) was invoked with arguments
that contain spaces, these arguments would be split into separate
arguments. They must be quoted. This also affected installations where
$prefix contained a space, as in "C:\Program Files\GIT". Both errors can
be triggered by invoking

    git hash-object "a b"

where "a b" is an existing file.
This commit is contained in:
Johannes Sixt
2007-10-10 09:00:19 +02:00
parent 56dc8fc47a
commit 524344cdf5

View File

@@ -405,7 +405,12 @@ void mingw_execve(const char *cmd, const char **argv, const char **env)
{
/* check if git_command is a shell script */
if (!try_shell_exec(cmd, argv, env)) {
int ret = spawnve(_P_WAIT, cmd, argv, env);
const char **qargv;
int n;
for (n = 0; argv[n];) n++;
qargv = xmalloc((n+1)*sizeof(char*));
quote_argv(qargv, argv);
int ret = spawnve(_P_WAIT, cmd, qargv, env);
if (ret != -1)
exit(ret);
}