зеркало из https://github.com/microsoft/git.git
run_command: teach API users to use embedded 'args' more
The child_process structure has an embedded strvec for formulating the command line argument list these days, but code that predates the wide use of it prepared a separate char *argv[] array and manually set the child_process.argv pointer point at it. Teach these old-style code to lose the separate argv[] array. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
47ae905ffb
Коммит
afbdba391e
|
@ -638,7 +638,6 @@ static int filter_buffer_or_fd(int in, int out, void *data)
|
|||
struct child_process child_process = CHILD_PROCESS_INIT;
|
||||
struct filter_params *params = (struct filter_params *)data;
|
||||
int write_err, status;
|
||||
const char *argv[] = { NULL, NULL };
|
||||
|
||||
/* apply % substitution to cmd */
|
||||
struct strbuf cmd = STRBUF_INIT;
|
||||
|
@ -656,9 +655,7 @@ static int filter_buffer_or_fd(int in, int out, void *data)
|
|||
strbuf_expand(&cmd, params->cmd, strbuf_expand_dict_cb, &dict);
|
||||
strbuf_release(&path);
|
||||
|
||||
argv[0] = cmd.buf;
|
||||
|
||||
child_process.argv = argv;
|
||||
strvec_push(&child_process.args, cmd.buf);
|
||||
child_process.use_shell = 1;
|
||||
child_process.in = -1;
|
||||
child_process.out = out;
|
||||
|
|
|
@ -274,11 +274,9 @@ static int run_credential_helper(struct credential *c,
|
|||
int want_output)
|
||||
{
|
||||
struct child_process helper = CHILD_PROCESS_INIT;
|
||||
const char *argv[] = { NULL, NULL };
|
||||
FILE *fp;
|
||||
|
||||
argv[0] = cmd;
|
||||
helper.argv = argv;
|
||||
strvec_push(&helper.args, cmd);
|
||||
helper.use_shell = 1;
|
||||
helper.in = -1;
|
||||
if (want_output)
|
||||
|
|
13
submodule.c
13
submodule.c
|
@ -1726,14 +1726,6 @@ unsigned is_submodule_modified(const char *path, int ignore_untracked)
|
|||
int submodule_uses_gitfile(const char *path)
|
||||
{
|
||||
struct child_process cp = CHILD_PROCESS_INIT;
|
||||
const char *argv[] = {
|
||||
"submodule",
|
||||
"foreach",
|
||||
"--quiet",
|
||||
"--recursive",
|
||||
"test -f .git",
|
||||
NULL,
|
||||
};
|
||||
struct strbuf buf = STRBUF_INIT;
|
||||
const char *git_dir;
|
||||
|
||||
|
@ -1746,7 +1738,10 @@ int submodule_uses_gitfile(const char *path)
|
|||
strbuf_release(&buf);
|
||||
|
||||
/* Now test that all nested submodules use a gitfile too */
|
||||
cp.argv = argv;
|
||||
strvec_pushl(&cp.args,
|
||||
"submodule", "foreach", "--quiet", "--recursive",
|
||||
"test -f .git", NULL);
|
||||
|
||||
prepare_submodule_repo_env(&cp.env_array);
|
||||
cp.git_cmd = 1;
|
||||
cp.no_stdin = 1;
|
||||
|
|
|
@ -221,15 +221,13 @@ static char *apply_command(const char *command, const char *arg)
|
|||
struct strbuf cmd = STRBUF_INIT;
|
||||
struct strbuf buf = STRBUF_INIT;
|
||||
struct child_process cp = CHILD_PROCESS_INIT;
|
||||
const char *argv[] = {NULL, NULL};
|
||||
char *result;
|
||||
|
||||
strbuf_addstr(&cmd, command);
|
||||
if (arg)
|
||||
strbuf_replace(&cmd, TRAILER_ARG_STRING, arg);
|
||||
|
||||
argv[0] = cmd.buf;
|
||||
cp.argv = argv;
|
||||
strvec_push(&cp.args, cmd.buf);
|
||||
cp.env = local_repo_env;
|
||||
cp.no_stdin = 1;
|
||||
cp.use_shell = 1;
|
||||
|
|
Загрузка…
Ссылка в новой задаче