]> git.ipfire.org Git - thirdparty/git.git/commitdiff
difftool: use run_command() API in run_file_diff()
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Mon, 13 Sep 2021 03:35:39 +0000 (05:35 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 13 Sep 2021 06:27:38 +0000 (23:27 -0700)
Change the run_file_diff() function to use the run_command() API
directly, instead of invoking the run_command_v_opt_cd_env() wrapper.

This allows it, like run_dir_diff(), to use the "args" from "struct
strvec", instead of the "const char **argv" passed into
cmd_difftool(). This will be used in the subsequent commit to get rid
of OPT_ARGUMENT() from cmd_difftool().

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/difftool.c

index f8fcc67640fc552192fc4985b0fec503ca5bb328..de2e5545c81a4d6132b8cbd5741f5078d62617f2 100644 (file)
@@ -663,24 +663,23 @@ finish:
 }
 
 static int run_file_diff(int prompt, const char *prefix,
-                        int argc, const char **argv)
+                        struct child_process *child)
 {
-       struct strvec args = STRVEC_INIT;
        const char *env[] = {
                "GIT_PAGER=", "GIT_EXTERNAL_DIFF=git-difftool--helper", NULL,
                NULL
        };
-       int i;
 
        if (prompt > 0)
                env[2] = "GIT_DIFFTOOL_PROMPT=true";
        else if (!prompt)
                env[2] = "GIT_DIFFTOOL_NO_PROMPT=true";
 
+       child->git_cmd = 1;
+       child->dir = prefix;
+       strvec_pushv(&child->env_array, env);
 
-       for (i = 0; i < argc; i++)
-               strvec_push(&args, argv[i]);
-       return run_command_v_opt_cd_env(args.v, RUN_GIT_CMD, prefix, env);
+       return run_command(child);
 }
 
 int cmd_difftool(int argc, const char **argv, const char *prefix)
@@ -770,5 +769,5 @@ int cmd_difftool(int argc, const char **argv, const char *prefix)
 
        if (dir_diff)
                return run_dir_diff(extcmd, symlinks, prefix, &child);
-       return run_file_diff(prompt, prefix, child.args.nr, child.args.v);
+       return run_file_diff(prompt, prefix, &child);
 }