use child_process member "args" instead of string array variable
Use run_command() with a struct child_process variable and populate its "args" member directly instead of building a string array and passing it to run_command_v_opt(). This avoids the use of magic index numbers and makes simplifies the possible addition of more arguments in the future. Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Taylor Blau <me@ttaylorr.com>
This commit is contained in:
parent
242aa33de0
commit
4120294cbf
@ -360,8 +360,8 @@ static int run_dir_diff(const char *extcmd, int symlinks, const char *prefix,
|
||||
struct pair_entry *entry;
|
||||
struct index_state wtindex;
|
||||
struct checkout lstate, rstate;
|
||||
int flags = RUN_GIT_CMD, err = 0;
|
||||
const char *helper_argv[] = { "difftool--helper", NULL, NULL, NULL };
|
||||
int err = 0;
|
||||
struct child_process cmd = CHILD_PROCESS_INIT;
|
||||
struct hashmap wt_modified, tmp_modified;
|
||||
int indices_loaded = 0;
|
||||
|
||||
@ -563,16 +563,17 @@ static int run_dir_diff(const char *extcmd, int symlinks, const char *prefix,
|
||||
}
|
||||
|
||||
strbuf_setlen(&ldir, ldir_len);
|
||||
helper_argv[1] = ldir.buf;
|
||||
strbuf_setlen(&rdir, rdir_len);
|
||||
helper_argv[2] = rdir.buf;
|
||||
|
||||
if (extcmd) {
|
||||
helper_argv[0] = extcmd;
|
||||
flags = 0;
|
||||
} else
|
||||
strvec_push(&cmd.args, extcmd);
|
||||
} else {
|
||||
strvec_push(&cmd.args, "difftool--helper");
|
||||
cmd.git_cmd = 1;
|
||||
setenv("GIT_DIFFTOOL_DIRDIFF", "true", 1);
|
||||
ret = run_command_v_opt(helper_argv, flags);
|
||||
}
|
||||
strvec_pushl(&cmd.args, ldir.buf, rdir.buf, NULL);
|
||||
ret = run_command(&cmd);
|
||||
|
||||
/* TODO: audit for interaction with sparse-index. */
|
||||
ensure_full_index(&wtindex);
|
||||
|
@ -347,33 +347,25 @@ out:
|
||||
|
||||
static void read_empty(const struct object_id *oid)
|
||||
{
|
||||
int i = 0;
|
||||
const char *args[7];
|
||||
struct child_process cmd = CHILD_PROCESS_INIT;
|
||||
|
||||
args[i++] = "read-tree";
|
||||
args[i++] = "-m";
|
||||
args[i++] = "-u";
|
||||
args[i++] = empty_tree_oid_hex();
|
||||
args[i++] = oid_to_hex(oid);
|
||||
args[i] = NULL;
|
||||
strvec_pushl(&cmd.args, "read-tree", "-m", "-u", empty_tree_oid_hex(),
|
||||
oid_to_hex(oid), NULL);
|
||||
cmd.git_cmd = 1;
|
||||
|
||||
if (run_command_v_opt(args, RUN_GIT_CMD))
|
||||
if (run_command(&cmd))
|
||||
die(_("read-tree failed"));
|
||||
}
|
||||
|
||||
static void reset_hard(const struct object_id *oid)
|
||||
{
|
||||
int i = 0;
|
||||
const char *args[6];
|
||||
struct child_process cmd = CHILD_PROCESS_INIT;
|
||||
|
||||
args[i++] = "read-tree";
|
||||
args[i++] = "-v";
|
||||
args[i++] = "--reset";
|
||||
args[i++] = "-u";
|
||||
args[i++] = oid_to_hex(oid);
|
||||
args[i] = NULL;
|
||||
strvec_pushl(&cmd.args, "read-tree", "-v", "--reset", "-u",
|
||||
oid_to_hex(oid), NULL);
|
||||
cmd.git_cmd = 1;
|
||||
|
||||
if (run_command_v_opt(args, RUN_GIT_CMD))
|
||||
if (run_command(&cmd))
|
||||
die(_("read-tree failed"));
|
||||
}
|
||||
|
||||
|
@ -92,13 +92,15 @@ static int verbose;
|
||||
|
||||
static int fetch_remote(const char *name)
|
||||
{
|
||||
const char *argv[] = { "fetch", name, NULL, NULL };
|
||||
if (verbose) {
|
||||
argv[1] = "-v";
|
||||
argv[2] = name;
|
||||
}
|
||||
struct child_process cmd = CHILD_PROCESS_INIT;
|
||||
|
||||
strvec_push(&cmd.args, "fetch");
|
||||
if (verbose)
|
||||
strvec_push(&cmd.args, "-v");
|
||||
strvec_push(&cmd.args, name);
|
||||
cmd.git_cmd = 1;
|
||||
printf_ln(_("Updating %s"), name);
|
||||
if (run_command_v_opt(argv, RUN_GIT_CMD))
|
||||
if (run_command(&cmd))
|
||||
return error(_("Could not fetch %s"), name);
|
||||
return 0;
|
||||
}
|
||||
|
@ -196,16 +196,19 @@ static int read_yes_no_answer(void)
|
||||
static int ask_yes_no_if_possible(const char *format, ...)
|
||||
{
|
||||
char question[4096];
|
||||
const char *retry_hook[] = { NULL, NULL, NULL };
|
||||
const char *retry_hook;
|
||||
va_list args;
|
||||
|
||||
va_start(args, format);
|
||||
vsnprintf(question, sizeof(question), format, args);
|
||||
va_end(args);
|
||||
|
||||
if ((retry_hook[0] = mingw_getenv("GIT_ASK_YESNO"))) {
|
||||
retry_hook[1] = question;
|
||||
return !run_command_v_opt(retry_hook, 0);
|
||||
retry_hook = mingw_getenv("GIT_ASK_YESNO");
|
||||
if (retry_hook) {
|
||||
struct child_process cmd = CHILD_PROCESS_INIT;
|
||||
|
||||
strvec_pushl(&cmd.args, retry_hook, question, NULL);
|
||||
return !run_command(&cmd);
|
||||
}
|
||||
|
||||
if (!isatty(_fileno(stdin)) || !isatty(_fileno(stderr)))
|
||||
|
@ -193,7 +193,7 @@ static enum ll_merge_result ll_ext_merge(const struct ll_merge_driver *fn,
|
||||
struct strbuf cmd = STRBUF_INIT;
|
||||
struct strbuf_expand_dict_entry dict[6];
|
||||
struct strbuf path_sq = STRBUF_INIT;
|
||||
const char *args[] = { NULL, NULL };
|
||||
struct child_process child = CHILD_PROCESS_INIT;
|
||||
int status, fd, i;
|
||||
struct stat st;
|
||||
enum ll_merge_result ret;
|
||||
@ -219,8 +219,9 @@ static enum ll_merge_result ll_ext_merge(const struct ll_merge_driver *fn,
|
||||
|
||||
strbuf_expand(&cmd, fn->cmdline, strbuf_expand_dict_cb, &dict);
|
||||
|
||||
args[0] = cmd.buf;
|
||||
status = run_command_v_opt(args, RUN_USING_SHELL);
|
||||
child.use_shell = 1;
|
||||
strvec_push(&child.args, cmd.buf);
|
||||
status = run_command(&child);
|
||||
fd = open(temp[1], O_RDONLY);
|
||||
if (fd < 0)
|
||||
goto bad;
|
||||
|
@ -8,7 +8,7 @@ int cmd_main(int argc, const char **argv)
|
||||
struct strbuf buf = STRBUF_INIT;
|
||||
FILE *f;
|
||||
int i;
|
||||
const char *child_argv[] = { NULL, NULL };
|
||||
struct child_process cmd = CHILD_PROCESS_INIT;
|
||||
|
||||
/* First, print all parameters into $TRASH_DIRECTORY/ssh-output */
|
||||
if (!trash_directory)
|
||||
@ -25,6 +25,7 @@ int cmd_main(int argc, const char **argv)
|
||||
/* Now, evaluate the *last* parameter */
|
||||
if (argc < 2)
|
||||
return 0;
|
||||
child_argv[0] = argv[argc - 1];
|
||||
return run_command_v_opt(child_argv, RUN_USING_SHELL);
|
||||
cmd.use_shell = 1;
|
||||
strvec_push(&cmd.args, argv[argc - 1]);
|
||||
return run_command(&cmd);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user