]> git.ipfire.org Git - thirdparty/git.git/commitdiff
run_command: teach API users to use embedded 'args' more
authorJunio C Hamano <gitster@pobox.com>
Wed, 26 Aug 2020 22:25:03 +0000 (15:25 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 26 Aug 2020 22:32:37 +0000 (15:32 -0700)
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>
convert.c
credential.c
submodule.c
trailer.c

index 572449825c5a4c8fd1ff65bb0c947d0c567d002b..8e6c2924215a4ee754658cbc9008856845fc071c 100644 (file)
--- a/convert.c
+++ b/convert.c
@@ -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;
index d8d226b97e34805735cc14bdc3e549d012b33f8d..efc29dc5e1d28e0b2f6f92051de291dfb13e57ae 100644 (file)
@@ -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)
index e2ef5698c893c3587e500ac88b46aa9ba68609ea..0e3bf5bbfe725019f7f78612701419132b18075b 100644 (file)
@@ -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;
index 0c414f2fed2b5701f616eb2d88a386e5da16fda8..68dabc2556c8232e1df268ae9f82d539505541ef 100644 (file)
--- a/trailer.c
+++ b/trailer.c
@@ -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;