The "argc" and "argv" names made sense when the struct was argv_array,
but now they're just confusing. Let's rename them to "nr" (which we use
for counts elsewhere) and "v" (which is rather terse, but reads well
when combined with typical variable names like "args.v").

Note that we have to update all of the callers immediately. Playing
tricks with the preprocessor is hard here, because we wouldn't want to
rewrite unrelated tokens.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2020-07-28 20:37:20 -04:00 коммит произвёл Junio C Hamano
Родитель b5eb741a00
Коммит d70a9eb611
52 изменённых файлов: 186 добавлений и 186 удалений

Просмотреть файл

@ -944,7 +944,7 @@ static int run_patch(struct add_i_state *s, const struct pathspec *ps,
files->items.items[i].string); files->items.items[i].string);
parse_pathspec(&ps_selected, parse_pathspec(&ps_selected,
PATHSPEC_ALL_MAGIC & ~PATHSPEC_LITERAL, PATHSPEC_ALL_MAGIC & ~PATHSPEC_LITERAL,
PATHSPEC_LITERAL_PATH, "", args.argv); PATHSPEC_LITERAL_PATH, "", args.v);
res = run_add_p(s->r, ADD_P_ADD, NULL, &ps_selected); res = run_add_p(s->r, ADD_P_ADD, NULL, &ps_selected);
strvec_clear(&args); strvec_clear(&args);
clear_pathspec(&ps_selected); clear_pathspec(&ps_selected);
@ -986,7 +986,7 @@ static int run_diff(struct add_i_state *s, const struct pathspec *ps,
if (files->selected[i]) if (files->selected[i])
strvec_push(&args, strvec_push(&args,
files->items.items[i].string); files->items.items[i].string);
res = run_command_v_opt(args.argv, 0); res = run_command_v_opt(args.v, 0);
strvec_clear(&args); strvec_clear(&args);
} }

Просмотреть файл

@ -391,14 +391,14 @@ static int parse_diff(struct add_p_state *s, const struct pathspec *ps)
get_oid("HEAD", &oid) ? get_oid("HEAD", &oid) ?
empty_tree_oid_hex() : s->revision); empty_tree_oid_hex() : s->revision);
} }
color_arg_index = args.argc; color_arg_index = args.nr;
/* Use `--no-color` explicitly, just in case `diff.color = always`. */ /* Use `--no-color` explicitly, just in case `diff.color = always`. */
strvec_pushl(&args, "--no-color", "-p", "--", NULL); strvec_pushl(&args, "--no-color", "-p", "--", NULL);
for (i = 0; i < ps->nr; i++) for (i = 0; i < ps->nr; i++)
strvec_push(&args, ps->items[i].original); strvec_push(&args, ps->items[i].original);
setup_child_process(s, &cp, NULL); setup_child_process(s, &cp, NULL);
cp.argv = args.argv; cp.argv = args.v;
res = capture_command(&cp, plain, 0); res = capture_command(&cp, plain, 0);
if (res) { if (res) {
strvec_clear(&args); strvec_clear(&args);
@ -415,8 +415,8 @@ static int parse_diff(struct add_p_state *s, const struct pathspec *ps)
const char *diff_filter = s->s.interactive_diff_filter; const char *diff_filter = s->s.interactive_diff_filter;
setup_child_process(s, &colored_cp, NULL); setup_child_process(s, &colored_cp, NULL);
xsnprintf((char *)args.argv[color_arg_index], 8, "--color"); xsnprintf((char *)args.v[color_arg_index], 8, "--color");
colored_cp.argv = args.argv; colored_cp.argv = args.v;
colored = &s->colored; colored = &s->colored;
res = capture_command(&colored_cp, colored, 0); res = capture_command(&colored_cp, colored, 0);
strvec_clear(&args); strvec_clear(&args);

Просмотреть файл

@ -649,7 +649,7 @@ static void bisect_rev_setup(struct repository *r, struct rev_info *revs,
if (read_paths) if (read_paths)
read_bisect_paths(&rev_argv); read_bisect_paths(&rev_argv);
setup_revisions(rev_argv.argc, rev_argv.argv, revs, NULL); setup_revisions(rev_argv.nr, rev_argv.v, revs, NULL);
/* XXX leak rev_argv, as "revs" may still be pointing to it */ /* XXX leak rev_argv, as "revs" may still be pointing to it */
} }

Просмотреть файл

@ -228,7 +228,7 @@ int run_add_interactive(const char *revision, const char *patch_mode,
/* pass original pathspec, to be re-parsed */ /* pass original pathspec, to be re-parsed */
strvec_push(&argv, pathspec->items[i].original); strvec_push(&argv, pathspec->items[i].original);
status = run_command_v_opt(argv.argv, RUN_GIT_CMD); status = run_command_v_opt(argv.v, RUN_GIT_CMD);
strvec_clear(&argv); strvec_clear(&argv);
return status; return status;
} }

Просмотреть файл

@ -812,7 +812,7 @@ static int split_mail_stgit_series(struct am_state *state, const char **paths,
strbuf_release(&sb); strbuf_release(&sb);
free(series_dir_buf); free(series_dir_buf);
ret = split_mail_conv(stgit_patch_to_mail, state, patches.argv, keep_cr); ret = split_mail_conv(stgit_patch_to_mail, state, patches.v, keep_cr);
strvec_clear(&patches); strvec_clear(&patches);
return ret; return ret;
@ -1002,7 +1002,7 @@ static void am_setup(struct am_state *state, enum patch_format patch_format,
} }
write_state_text(state, "scissors", str); write_state_text(state, "scissors", str);
sq_quote_argv(&sb, state->git_apply_opts.argv); sq_quote_argv(&sb, state->git_apply_opts.v);
write_state_text(state, "apply-opt", sb.buf); write_state_text(state, "apply-opt", sb.buf);
if (state->rebasing) if (state->rebasing)
@ -1401,9 +1401,9 @@ static int run_apply(const struct am_state *state, const char *index_file)
BUG("init_apply_state() failed"); BUG("init_apply_state() failed");
strvec_push(&apply_opts, "apply"); strvec_push(&apply_opts, "apply");
strvec_pushv(&apply_opts, state->git_apply_opts.argv); strvec_pushv(&apply_opts, state->git_apply_opts.v);
opts_left = apply_parse_options(apply_opts.argc, apply_opts.argv, opts_left = apply_parse_options(apply_opts.nr, apply_opts.v,
&apply_state, &force_apply, &options, &apply_state, &force_apply, &options,
NULL); NULL);
@ -1428,7 +1428,7 @@ static int run_apply(const struct am_state *state, const char *index_file)
strvec_push(&apply_paths, am_path(state, "patch")); strvec_push(&apply_paths, am_path(state, "patch"));
res = apply_all_patches(&apply_state, apply_paths.argc, apply_paths.argv, options); res = apply_all_patches(&apply_state, apply_paths.nr, apply_paths.v, options);
strvec_clear(&apply_paths); strvec_clear(&apply_paths);
strvec_clear(&apply_opts); strvec_clear(&apply_opts);
@ -1455,7 +1455,7 @@ static int build_fake_ancestor(const struct am_state *state, const char *index_f
cp.git_cmd = 1; cp.git_cmd = 1;
strvec_push(&cp.args, "apply"); strvec_push(&cp.args, "apply");
strvec_pushv(&cp.args, state->git_apply_opts.argv); strvec_pushv(&cp.args, state->git_apply_opts.v);
strvec_pushf(&cp.args, "--build-fake-ancestor=%s", index_file); strvec_pushf(&cp.args, "--build-fake-ancestor=%s", index_file);
strvec_push(&cp.args, am_path(state, "patch")); strvec_push(&cp.args, am_path(state, "patch"));
@ -2376,10 +2376,10 @@ int cmd_am(int argc, const char **argv, const char *prefix)
strvec_push(&paths, mkpath("%s/%s", prefix, argv[i])); strvec_push(&paths, mkpath("%s/%s", prefix, argv[i]));
} }
if (state.interactive && !paths.argc) if (state.interactive && !paths.nr)
die(_("interactive mode requires patches on the command line")); die(_("interactive mode requires patches on the command line"));
am_setup(&state, patch_format, paths.argv, keep_cr); am_setup(&state, patch_format, paths.v, keep_cr);
strvec_clear(&paths); strvec_clear(&paths);
} }

Просмотреть файл

@ -18,5 +18,5 @@ int cmd_annotate(int argc, const char **argv, const char *prefix)
strvec_push(&args, argv[i]); strvec_push(&args, argv[i]);
} }
return cmd_blame(args.argc, args.argv, prefix); return cmd_blame(args.nr, args.v, prefix);
} }

Просмотреть файл

@ -168,7 +168,7 @@ static int bisect_reset(const char *commit)
struct strvec argv = STRVEC_INIT; struct strvec argv = STRVEC_INIT;
strvec_pushl(&argv, "checkout", branch.buf, "--", NULL); strvec_pushl(&argv, "checkout", branch.buf, "--", NULL);
if (run_command_v_opt(argv.argv, RUN_GIT_CMD)) { if (run_command_v_opt(argv.v, RUN_GIT_CMD)) {
error(_("could not check out original" error(_("could not check out original"
" HEAD '%s'. Try 'git bisect" " HEAD '%s'. Try 'git bisect"
" reset <commit>'."), branch.buf); " reset <commit>'."), branch.buf);
@ -530,7 +530,7 @@ static int bisect_start(struct bisect_terms *terms, int no_checkout,
strvec_pushl(&argv, "checkout", start_head.buf, strvec_pushl(&argv, "checkout", start_head.buf,
"--", NULL); "--", NULL);
if (run_command_v_opt(argv.argv, RUN_GIT_CMD)) { if (run_command_v_opt(argv.v, RUN_GIT_CMD)) {
res = error(_("checking out '%s' failed." res = error(_("checking out '%s' failed."
" Try 'git bisect start " " Try 'git bisect start "
"<valid-branch>'."), "<valid-branch>'."),

Просмотреть файл

@ -752,7 +752,7 @@ static int git_sparse_checkout_init(const char *repo)
*/ */
core_apply_sparse_checkout = 1; core_apply_sparse_checkout = 1;
if (run_command_v_opt(argv.argv, RUN_GIT_CMD)) { if (run_command_v_opt(argv.v, RUN_GIT_CMD)) {
error(_("failed to initialize sparse-checkout")); error(_("failed to initialize sparse-checkout"));
result = 1; result = 1;
} }
@ -844,7 +844,7 @@ static int checkout(int submodule_progress)
"--single-branch" : "--single-branch" :
"--no-single-branch"); "--no-single-branch");
err = run_command_v_opt(args.argv, RUN_GIT_CMD); err = run_command_v_opt(args.v, RUN_GIT_CMD);
strvec_clear(&args); strvec_clear(&args);
} }

Просмотреть файл

@ -1008,7 +1008,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
struct strvec env = STRVEC_INIT; struct strvec env = STRVEC_INIT;
strvec_pushf(&env, "GIT_INDEX_FILE=%s", index_file); strvec_pushf(&env, "GIT_INDEX_FILE=%s", index_file);
if (launch_editor(git_path_commit_editmsg(), NULL, env.argv)) { if (launch_editor(git_path_commit_editmsg(), NULL, env.v)) {
fprintf(stderr, fprintf(stderr,
_("Please supply the message using either -m or -F option.\n")); _("Please supply the message using either -m or -F option.\n"));
exit(1); exit(1);

Просмотреть файл

@ -509,7 +509,7 @@ static void describe_blob(struct object_id oid, struct strbuf *dst)
NULL); NULL);
repo_init_revisions(the_repository, &revs, NULL); repo_init_revisions(the_repository, &revs, NULL);
if (setup_revisions(args.argc, args.argv, &revs, NULL) > 1) if (setup_revisions(args.nr, args.v, &revs, NULL) > 1)
BUG("setup_revisions could not handle all args?"); BUG("setup_revisions could not handle all args?");
if (prepare_revision_walk(&revs)) if (prepare_revision_walk(&revs))
@ -613,7 +613,7 @@ int cmd_describe(int argc, const char **argv, const char *prefix)
strvec_pushv(&args, argv); strvec_pushv(&args, argv);
else else
strvec_push(&args, "HEAD"); strvec_push(&args, "HEAD");
return cmd_name_rev(args.argc, args.argv, prefix); return cmd_name_rev(args.nr, args.v, prefix);
} }
hashmap_init(&names, commit_name_neq, NULL, 0); hashmap_init(&names, commit_name_neq, NULL, 0);
@ -659,7 +659,7 @@ int cmd_describe(int argc, const char **argv, const char *prefix)
repo_init_revisions(the_repository, &revs, prefix); repo_init_revisions(the_repository, &revs, prefix);
strvec_pushv(&args, diff_index_args); strvec_pushv(&args, diff_index_args);
if (setup_revisions(args.argc, args.argv, &revs, NULL) != 1) if (setup_revisions(args.nr, args.v, &revs, NULL) != 1)
BUG("malformed internal diff-index command line"); BUG("malformed internal diff-index command line");
result = run_diff_index(&revs, 0); result = run_diff_index(&revs, 0);

Просмотреть файл

@ -683,7 +683,7 @@ static int run_file_diff(int prompt, const char *prefix,
strvec_push(&args, "diff"); strvec_push(&args, "diff");
for (i = 0; i < argc; i++) for (i = 0; i < argc; i++)
strvec_push(&args, argv[i]); strvec_push(&args, argv[i]);
ret = run_command_v_opt_cd_env(args.argv, RUN_GIT_CMD, prefix, env); ret = run_command_v_opt_cd_env(args.v, RUN_GIT_CMD, prefix, env);
exit(ret); exit(ret);
} }

Просмотреть файл

@ -1354,7 +1354,7 @@ static int do_fetch(struct transport *transport,
if (tags == TAGS_SET || tags == TAGS_DEFAULT) { if (tags == TAGS_SET || tags == TAGS_DEFAULT) {
must_list_refs = 1; must_list_refs = 1;
if (ref_prefixes.argc) if (ref_prefixes.nr)
strvec_push(&ref_prefixes, "refs/tags/"); strvec_push(&ref_prefixes, "refs/tags/");
} }
@ -1605,7 +1605,7 @@ static int fetch_multiple(struct string_list *list, int max_children)
add_options_to_argv(&argv); add_options_to_argv(&argv);
if (max_children != 1 && list->nr != 1) { if (max_children != 1 && list->nr != 1) {
struct parallel_fetch_state state = { argv.argv, list, 0, 0 }; struct parallel_fetch_state state = { argv.v, list, 0, 0 };
strvec_push(&argv, "--end-of-options"); strvec_push(&argv, "--end-of-options");
result = run_processes_parallel_tr2(max_children, result = run_processes_parallel_tr2(max_children,
@ -1623,7 +1623,7 @@ static int fetch_multiple(struct string_list *list, int max_children)
strvec_push(&argv, name); strvec_push(&argv, name);
if (verbosity >= 0) if (verbosity >= 0)
printf(_("Fetching %s\n"), name); printf(_("Fetching %s\n"), name);
if (run_command_v_opt(argv.argv, RUN_GIT_CMD)) { if (run_command_v_opt(argv.v, RUN_GIT_CMD)) {
error(_("Could not fetch %s"), name); error(_("Could not fetch %s"), name);
result = 1; result = 1;
} }

Просмотреть файл

@ -514,11 +514,11 @@ static void gc_before_repack(void)
if (done++) if (done++)
return; return;
if (pack_refs && run_command_v_opt(pack_refs_cmd.argv, RUN_GIT_CMD)) if (pack_refs && run_command_v_opt(pack_refs_cmd.v, RUN_GIT_CMD))
die(FAILED_RUN, pack_refs_cmd.argv[0]); die(FAILED_RUN, pack_refs_cmd.v[0]);
if (prune_reflogs && run_command_v_opt(reflog.argv, RUN_GIT_CMD)) if (prune_reflogs && run_command_v_opt(reflog.v, RUN_GIT_CMD))
die(FAILED_RUN, reflog.argv[0]); die(FAILED_RUN, reflog.v[0]);
} }
int cmd_gc(int argc, const char **argv, const char *prefix) int cmd_gc(int argc, const char **argv, const char *prefix)
@ -653,8 +653,8 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
if (!repository_format_precious_objects) { if (!repository_format_precious_objects) {
close_object_store(the_repository->objects); close_object_store(the_repository->objects);
if (run_command_v_opt(repack.argv, RUN_GIT_CMD)) if (run_command_v_opt(repack.v, RUN_GIT_CMD))
die(FAILED_RUN, repack.argv[0]); die(FAILED_RUN, repack.v[0]);
if (prune_expire) { if (prune_expire) {
strvec_push(&prune, prune_expire); strvec_push(&prune, prune_expire);
@ -663,19 +663,19 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
if (has_promisor_remote()) if (has_promisor_remote())
strvec_push(&prune, strvec_push(&prune,
"--exclude-promisor-objects"); "--exclude-promisor-objects");
if (run_command_v_opt(prune.argv, RUN_GIT_CMD)) if (run_command_v_opt(prune.v, RUN_GIT_CMD))
die(FAILED_RUN, prune.argv[0]); die(FAILED_RUN, prune.v[0]);
} }
} }
if (prune_worktrees_expire) { if (prune_worktrees_expire) {
strvec_push(&prune_worktrees, prune_worktrees_expire); strvec_push(&prune_worktrees, prune_worktrees_expire);
if (run_command_v_opt(prune_worktrees.argv, RUN_GIT_CMD)) if (run_command_v_opt(prune_worktrees.v, RUN_GIT_CMD))
die(FAILED_RUN, prune_worktrees.argv[0]); die(FAILED_RUN, prune_worktrees.v[0]);
} }
if (run_command_v_opt(rerere.argv, RUN_GIT_CMD)) if (run_command_v_opt(rerere.v, RUN_GIT_CMD))
die(FAILED_RUN, rerere.argv[0]); die(FAILED_RUN, rerere.v[0]);
report_garbage = report_pack_garbage; report_garbage = report_pack_garbage;
reprepare_packed_git(the_repository); reprepare_packed_git(the_repository);

Просмотреть файл

@ -3704,7 +3704,7 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
if (!use_internal_rev_list) if (!use_internal_rev_list)
read_object_list_from_stdin(); read_object_list_from_stdin();
else { else {
get_object_list(rp.argc, rp.argv); get_object_list(rp.nr, rp.v);
strvec_clear(&rp); strvec_clear(&rp);
} }
cleanup_preferred_base(); cleanup_preferred_base();

Просмотреть файл

@ -584,14 +584,14 @@ static int run_fetch(const char *repo, const char **refspecs)
strvec_push(&args, "--no-show-forced-updates"); strvec_push(&args, "--no-show-forced-updates");
if (set_upstream) if (set_upstream)
strvec_push(&args, set_upstream); strvec_push(&args, set_upstream);
strvec_pushv(&args, opt_fetch.argv); strvec_pushv(&args, opt_fetch.v);
if (repo) { if (repo) {
strvec_push(&args, repo); strvec_push(&args, repo);
strvec_pushv(&args, refspecs); strvec_pushv(&args, refspecs);
} else if (*refspecs) } else if (*refspecs)
BUG("refspecs without repo?"); BUG("refspecs without repo?");
ret = run_command_v_opt(args.argv, RUN_GIT_CMD); ret = run_command_v_opt(args.v, RUN_GIT_CMD);
strvec_clear(&args); strvec_clear(&args);
return ret; return ret;
} }
@ -691,8 +691,8 @@ static int run_merge(void)
strvec_push(&args, opt_ff); strvec_push(&args, opt_ff);
if (opt_verify_signatures) if (opt_verify_signatures)
strvec_push(&args, opt_verify_signatures); strvec_push(&args, opt_verify_signatures);
strvec_pushv(&args, opt_strategies.argv); strvec_pushv(&args, opt_strategies.v);
strvec_pushv(&args, opt_strategy_opts.argv); strvec_pushv(&args, opt_strategy_opts.v);
if (opt_gpg_sign) if (opt_gpg_sign)
strvec_push(&args, opt_gpg_sign); strvec_push(&args, opt_gpg_sign);
if (opt_autostash == 0) if (opt_autostash == 0)
@ -703,7 +703,7 @@ static int run_merge(void)
strvec_push(&args, "--allow-unrelated-histories"); strvec_push(&args, "--allow-unrelated-histories");
strvec_push(&args, "FETCH_HEAD"); strvec_push(&args, "FETCH_HEAD");
ret = run_command_v_opt(args.argv, RUN_GIT_CMD); ret = run_command_v_opt(args.v, RUN_GIT_CMD);
strvec_clear(&args); strvec_clear(&args);
return ret; return ret;
} }
@ -882,8 +882,8 @@ static int run_rebase(const struct object_id *curr_head,
strvec_push(&args, "--interactive"); strvec_push(&args, "--interactive");
if (opt_diffstat) if (opt_diffstat)
strvec_push(&args, opt_diffstat); strvec_push(&args, opt_diffstat);
strvec_pushv(&args, opt_strategies.argv); strvec_pushv(&args, opt_strategies.v);
strvec_pushv(&args, opt_strategy_opts.argv); strvec_pushv(&args, opt_strategy_opts.v);
if (opt_gpg_sign) if (opt_gpg_sign)
strvec_push(&args, opt_gpg_sign); strvec_push(&args, opt_gpg_sign);
if (opt_autostash == 0) if (opt_autostash == 0)
@ -902,7 +902,7 @@ static int run_rebase(const struct object_id *curr_head,
else else
strvec_push(&args, oid_to_hex(merge_head)); strvec_push(&args, oid_to_hex(merge_head));
ret = run_command_v_opt(args.argv, RUN_GIT_CMD); ret = run_command_v_opt(args.v, RUN_GIT_CMD);
strvec_clear(&args); strvec_clear(&args);
return ret; return ret;
} }

Просмотреть файл

@ -351,7 +351,7 @@ static int do_interactive_rebase(struct rebase_options *opts, unsigned flags)
oid_to_hex(&opts->restrict_revision->object.oid)); oid_to_hex(&opts->restrict_revision->object.oid));
ret = sequencer_make_script(the_repository, &todo_list.buf, ret = sequencer_make_script(the_repository, &todo_list.buf,
make_script_args.argc, make_script_args.argv, make_script_args.nr, make_script_args.v,
flags); flags);
if (ret) if (ret)
@ -900,7 +900,7 @@ static int run_am(struct rebase_options *opts)
return status; return status;
} }
strvec_pushv(&am.args, opts->git_am_opts.argv); strvec_pushv(&am.args, opts->git_am_opts.v);
strvec_push(&am.args, "--rebasing"); strvec_push(&am.args, "--rebasing");
strvec_pushf(&am.args, "--resolvemsg=%s", resolvemsg); strvec_pushf(&am.args, "--resolvemsg=%s", resolvemsg);
strvec_push(&am.args, "--patch-format=mboxrd"); strvec_push(&am.args, "--patch-format=mboxrd");
@ -969,7 +969,7 @@ static int run_specific_rebase(struct rebase_options *opts, enum action action)
add_var(&script_snippet, "revisions", opts->revisions); add_var(&script_snippet, "revisions", opts->revisions);
add_var(&script_snippet, "restrict_revision", opts->restrict_revision ? add_var(&script_snippet, "restrict_revision", opts->restrict_revision ?
oid_to_hex(&opts->restrict_revision->object.oid) : NULL); oid_to_hex(&opts->restrict_revision->object.oid) : NULL);
sq_quote_argv_pretty(&buf, opts->git_am_opts.argv); sq_quote_argv_pretty(&buf, opts->git_am_opts.v);
add_var(&script_snippet, "git_am_opt", buf.buf); add_var(&script_snippet, "git_am_opt", buf.buf);
strbuf_release(&buf); strbuf_release(&buf);
add_var(&script_snippet, "verbose", add_var(&script_snippet, "verbose",
@ -1625,8 +1625,8 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
allow_preemptive_ff = 0; allow_preemptive_ff = 0;
} }
for (i = 0; i < options.git_am_opts.argc; i++) { for (i = 0; i < options.git_am_opts.nr; i++) {
const char *option = options.git_am_opts.argv[i], *p; const char *option = options.git_am_opts.v[i], *p;
if (!strcmp(option, "--committer-date-is-author-date") || if (!strcmp(option, "--committer-date-is-author-date") ||
!strcmp(option, "--ignore-date") || !strcmp(option, "--ignore-date") ||
!strcmp(option, "--whitespace=fix") || !strcmp(option, "--whitespace=fix") ||
@ -1721,10 +1721,10 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
if (isatty(2) && options.flags & REBASE_NO_QUIET) if (isatty(2) && options.flags & REBASE_NO_QUIET)
strbuf_addstr(&options.git_format_patch_opt, " --progress"); strbuf_addstr(&options.git_format_patch_opt, " --progress");
if (options.git_am_opts.argc || options.type == REBASE_APPLY) { if (options.git_am_opts.nr || options.type == REBASE_APPLY) {
/* all am options except -q are compatible only with --apply */ /* all am options except -q are compatible only with --apply */
for (i = options.git_am_opts.argc - 1; i >= 0; i--) for (i = options.git_am_opts.nr - 1; i >= 0; i--)
if (strcmp(options.git_am_opts.argv[i], "-q")) if (strcmp(options.git_am_opts.v[i], "-q"))
break; break;
if (i >= 0) { if (i >= 0) {

Просмотреть файл

@ -950,7 +950,7 @@ static const char *push_to_deploy(unsigned char *sha1,
struct child_process child = CHILD_PROCESS_INIT; struct child_process child = CHILD_PROCESS_INIT;
child.argv = update_refresh; child.argv = update_refresh;
child.env = env->argv; child.env = env->v;
child.dir = work_tree; child.dir = work_tree;
child.no_stdin = 1; child.no_stdin = 1;
child.stdout_to_stderr = 1; child.stdout_to_stderr = 1;
@ -961,7 +961,7 @@ static const char *push_to_deploy(unsigned char *sha1,
/* run_command() does not clean up completely; reinitialize */ /* run_command() does not clean up completely; reinitialize */
child_process_init(&child); child_process_init(&child);
child.argv = diff_files; child.argv = diff_files;
child.env = env->argv; child.env = env->v;
child.dir = work_tree; child.dir = work_tree;
child.no_stdin = 1; child.no_stdin = 1;
child.stdout_to_stderr = 1; child.stdout_to_stderr = 1;
@ -974,7 +974,7 @@ static const char *push_to_deploy(unsigned char *sha1,
child_process_init(&child); child_process_init(&child);
child.argv = diff_index; child.argv = diff_index;
child.env = env->argv; child.env = env->v;
child.no_stdin = 1; child.no_stdin = 1;
child.no_stdout = 1; child.no_stdout = 1;
child.stdout_to_stderr = 0; child.stdout_to_stderr = 0;
@ -985,7 +985,7 @@ static const char *push_to_deploy(unsigned char *sha1,
read_tree[3] = hash_to_hex(sha1); read_tree[3] = hash_to_hex(sha1);
child_process_init(&child); child_process_init(&child);
child.argv = read_tree; child.argv = read_tree;
child.env = env->argv; child.env = env->v;
child.dir = work_tree; child.dir = work_tree;
child.no_stdin = 1; child.no_stdin = 1;
child.no_stdout = 1; child.no_stdout = 1;
@ -1004,7 +1004,7 @@ static const char *push_to_checkout(unsigned char *hash,
const char *work_tree) const char *work_tree)
{ {
strvec_pushf(env, "GIT_WORK_TREE=%s", absolute_path(work_tree)); strvec_pushf(env, "GIT_WORK_TREE=%s", absolute_path(work_tree));
if (run_hook_le(env->argv, push_to_checkout_hook, if (run_hook_le(env->v, push_to_checkout_hook,
hash_to_hex(hash), NULL)) hash_to_hex(hash), NULL))
return "push-to-checkout hook declined"; return "push-to-checkout hook declined";
else else
@ -1205,11 +1205,11 @@ static void run_update_post_hook(struct command *commands)
for (cmd = commands; cmd; cmd = cmd->next) { for (cmd = commands; cmd; cmd = cmd->next) {
if (cmd->error_string || cmd->did_not_exist) if (cmd->error_string || cmd->did_not_exist)
continue; continue;
if (!proc.args.argc) if (!proc.args.nr)
strvec_push(&proc.args, hook); strvec_push(&proc.args, hook);
strvec_push(&proc.args, cmd->ref_name); strvec_push(&proc.args, cmd->ref_name);
} }
if (!proc.args.argc) if (!proc.args.nr)
return; return;
proc.no_stdin = 1; proc.no_stdin = 1;

Просмотреть файл

@ -1470,7 +1470,7 @@ static int update(int argc, const char **argv)
for (i = 1; i < argc; i++) for (i = 1; i < argc; i++)
strvec_push(&fetch_argv, argv[i]); strvec_push(&fetch_argv, argv[i]);
if (strcmp(fetch_argv.argv[fetch_argv.argc-1], "default") == 0) { if (strcmp(fetch_argv.v[fetch_argv.nr-1], "default") == 0) {
git_config(get_remote_default, &default_defined); git_config(get_remote_default, &default_defined);
if (!default_defined) { if (!default_defined) {
strvec_pop(&fetch_argv); strvec_pop(&fetch_argv);
@ -1478,7 +1478,7 @@ static int update(int argc, const char **argv)
} }
} }
retval = run_command_v_opt(fetch_argv.argv, RUN_GIT_CMD); retval = run_command_v_opt(fetch_argv.v, RUN_GIT_CMD);
strvec_clear(&fetch_argv); strvec_clear(&fetch_argv);
return retval; return retval;
} }

Просмотреть файл

@ -513,7 +513,7 @@ static int convert_graft_file(int force)
continue; continue;
strvec_split(&args, buf.buf); strvec_split(&args, buf.buf);
if (args.argc && create_graft(args.argc, args.argv, force, 1)) if (args.nr && create_graft(args.nr, args.v, force, 1))
strbuf_addf(&err, "\n\t%s", buf.buf); strbuf_addf(&err, "\n\t%s", buf.buf);
strvec_clear(&args); strvec_clear(&args);
} }

Просмотреть файл

@ -561,7 +561,7 @@ static int git_show_branch_config(const char *var, const char *value, void *cb)
* default_arg is now passed to parse_options(), so we need to * default_arg is now passed to parse_options(), so we need to
* mimic the real argv a bit better. * mimic the real argv a bit better.
*/ */
if (!default_args.argc) if (!default_args.nr)
strvec_push(&default_args, "show-branch"); strvec_push(&default_args, "show-branch");
strvec_push(&default_args, value); strvec_push(&default_args, value);
return 0; return 0;
@ -684,9 +684,9 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
git_config(git_show_branch_config, NULL); git_config(git_show_branch_config, NULL);
/* If nothing is specified, try the default first */ /* If nothing is specified, try the default first */
if (ac == 1 && default_args.argc) { if (ac == 1 && default_args.nr) {
ac = default_args.argc; ac = default_args.nr;
av = default_args.argv; av = default_args.v;
} }
ac = parse_options(ac, av, prefix, builtin_show_branch_options, ac = parse_options(ac, av, prefix, builtin_show_branch_options,

Просмотреть файл

@ -745,7 +745,7 @@ static int show_stash(int argc, const char **argv, const char *prefix)
strvec_push(&revision_args, argv[i]); strvec_push(&revision_args, argv[i]);
} }
ret = get_stash_info(&info, stash_args.argc, stash_args.argv); ret = get_stash_info(&info, stash_args.nr, stash_args.v);
strvec_clear(&stash_args); strvec_clear(&stash_args);
if (ret) if (ret)
return -1; return -1;
@ -754,7 +754,7 @@ static int show_stash(int argc, const char **argv, const char *prefix)
* The config settings are applied only if there are not passed * The config settings are applied only if there are not passed
* any options. * any options.
*/ */
if (revision_args.argc == 1) { if (revision_args.nr == 1) {
if (show_stat) if (show_stat)
rev.diffopt.output_format = DIFF_FORMAT_DIFFSTAT; rev.diffopt.output_format = DIFF_FORMAT_DIFFSTAT;
@ -767,7 +767,7 @@ static int show_stash(int argc, const char **argv, const char *prefix)
} }
} }
argc = setup_revisions(revision_args.argc, revision_args.argv, &rev, NULL); argc = setup_revisions(revision_args.nr, revision_args.v, &rev, NULL);
if (argc > 1) { if (argc > 1) {
free_stash_info(&info); free_stash_info(&info);
usage_with_options(git_stash_show_usage, options); usage_with_options(git_stash_show_usage, options);
@ -1611,5 +1611,5 @@ int cmd_stash(int argc, const char **argv, const char *prefix)
/* Assume 'stash push' */ /* Assume 'stash push' */
strvec_push(&args, "push"); strvec_push(&args, "push");
strvec_pushv(&args, argv); strvec_pushv(&args, argv);
return !!push_stash(args.argc, args.argv, prefix, 1); return !!push_stash(args.nr, args.v, prefix, 1);
} }

Просмотреть файл

@ -817,9 +817,9 @@ static void status_submodule(const char *path, const struct object_id *ce_oid,
repo_init_revisions(the_repository, &rev, NULL); repo_init_revisions(the_repository, &rev, NULL);
rev.abbrev = 0; rev.abbrev = 0;
diff_files_args.argc = setup_revisions(diff_files_args.argc, diff_files_args.nr = setup_revisions(diff_files_args.nr,
diff_files_args.argv, diff_files_args.v,
&rev, NULL); &rev, NULL);
diff_files_result = run_diff_files(&rev, 0); diff_files_result = run_diff_files(&rev, 0);
if (!diff_result_code(&rev.diffopt, diff_files_result)) { if (!diff_result_code(&rev.diffopt, diff_files_result)) {

Просмотреть файл

@ -36,7 +36,7 @@ int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix)
char *buf = packet_read_line(0, NULL); char *buf = packet_read_line(0, NULL);
if (!buf) if (!buf)
break; /* got a flush */ break; /* got a flush */
if (sent_argv.argc > MAX_ARGS) if (sent_argv.nr > MAX_ARGS)
die("Too many options (>%d)", MAX_ARGS - 1); die("Too many options (>%d)", MAX_ARGS - 1);
if (!starts_with(buf, arg_cmd)) if (!starts_with(buf, arg_cmd))
@ -45,7 +45,7 @@ int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix)
} }
/* parse all options sent by the client */ /* parse all options sent by the client */
return write_archive(sent_argv.argc, sent_argv.argv, prefix, return write_archive(sent_argv.nr, sent_argv.v, prefix,
the_repository, NULL, 1); the_repository, NULL, 1);
} }

Просмотреть файл

@ -422,7 +422,7 @@ static int add_worktree(const char *path, const char *refname,
strvec_push(&cp.args, "--quiet"); strvec_push(&cp.args, "--quiet");
} }
cp.env = child_env.argv; cp.env = child_env.v;
ret = run_command(&cp); ret = run_command(&cp);
if (ret) if (ret)
goto done; goto done;
@ -433,7 +433,7 @@ static int add_worktree(const char *path, const char *refname,
strvec_pushl(&cp.args, "reset", "--hard", "--no-recurse-submodules", NULL); strvec_pushl(&cp.args, "reset", "--hard", "--no-recurse-submodules", NULL);
if (opts->quiet) if (opts->quiet)
strvec_push(&cp.args, "--quiet"); strvec_push(&cp.args, "--quiet");
cp.env = child_env.argv; cp.env = child_env.v;
ret = run_command(&cp); ret = run_command(&cp);
if (ret) if (ret)
goto done; goto done;
@ -943,7 +943,7 @@ static void check_clean_worktree(struct worktree *wt,
strvec_pushl(&cp.args, "status", strvec_pushl(&cp.args, "status",
"--porcelain", "--ignore-submodules=none", "--porcelain", "--ignore-submodules=none",
NULL); NULL);
cp.env = child_env.argv; cp.env = child_env.v;
cp.git_cmd = 1; cp.git_cmd = 1;
cp.dir = wt->path; cp.dir = wt->path;
cp.out = -1; cp.out = -1;

Просмотреть файл

@ -278,7 +278,7 @@ static int write_pack_data(int bundle_fd, struct rev_info *revs, struct strvec *
"pack-objects", "pack-objects",
"--stdout", "--thin", "--delta-base-offset", "--stdout", "--thin", "--delta-base-offset",
NULL); NULL);
strvec_pushv(&pack_objects.args, pack_options->argv); strvec_pushv(&pack_objects.args, pack_options->v);
pack_objects.in = -1; pack_objects.in = -1;
pack_objects.out = bundle_fd; pack_objects.out = bundle_fd;
pack_objects.git_cmd = 1; pack_objects.git_cmd = 1;

Просмотреть файл

@ -1643,7 +1643,7 @@ int run_commit_hook(int editor_is_used, const char *index_file,
strvec_push(&hook_env, "GIT_EDITOR=:"); strvec_push(&hook_env, "GIT_EDITOR=:");
va_start(args, name); va_start(args, name);
ret = run_hook_ve(hook_env.argv,name, args); ret = run_hook_ve(hook_env.v, name, args);
va_end(args); va_end(args);
strvec_clear(&hook_env); strvec_clear(&hook_env);

Просмотреть файл

@ -70,9 +70,9 @@ int server_supports_v2(const char *c, int die_on_error)
{ {
int i; int i;
for (i = 0; i < server_capabilities_v2.argc; i++) { for (i = 0; i < server_capabilities_v2.nr; i++) {
const char *out; const char *out;
if (skip_prefix(server_capabilities_v2.argv[i], c, &out) && if (skip_prefix(server_capabilities_v2.v[i], c, &out) &&
(!*out || *out == '=')) (!*out || *out == '='))
return 1; return 1;
} }
@ -87,9 +87,9 @@ int server_feature_v2(const char *c, const char **v)
{ {
int i; int i;
for (i = 0; i < server_capabilities_v2.argc; i++) { for (i = 0; i < server_capabilities_v2.nr; i++) {
const char *out; const char *out;
if (skip_prefix(server_capabilities_v2.argv[i], c, &out) && if (skip_prefix(server_capabilities_v2.v[i], c, &out) &&
(*out == '=')) { (*out == '=')) {
*v = out + 1; *v = out + 1;
return 1; return 1;
@ -103,9 +103,9 @@ int server_supports_feature(const char *c, const char *feature,
{ {
int i; int i;
for (i = 0; i < server_capabilities_v2.argc; i++) { for (i = 0; i < server_capabilities_v2.nr; i++) {
const char *out; const char *out;
if (skip_prefix(server_capabilities_v2.argv[i], c, &out) && if (skip_prefix(server_capabilities_v2.v[i], c, &out) &&
(!*out || *(out++) == '=')) { (!*out || *(out++) == '=')) {
if (parse_feature_request(out, feature)) if (parse_feature_request(out, feature))
return 1; return 1;
@ -488,9 +488,9 @@ struct ref **get_remote_refs(int fd_out, struct packet_reader *reader,
if (!for_push) if (!for_push)
packet_write_fmt(fd_out, "peel\n"); packet_write_fmt(fd_out, "peel\n");
packet_write_fmt(fd_out, "symrefs\n"); packet_write_fmt(fd_out, "symrefs\n");
for (i = 0; ref_prefixes && i < ref_prefixes->argc; i++) { for (i = 0; ref_prefixes && i < ref_prefixes->nr; i++) {
packet_write_fmt(fd_out, "ref-prefix %s\n", packet_write_fmt(fd_out, "ref-prefix %s\n",
ref_prefixes->argv[i]); ref_prefixes->v[i]);
} }
packet_flush(fd_out); packet_flush(fd_out);

Просмотреть файл

@ -482,7 +482,7 @@ static int upload_pack(const struct strvec *env)
strvec_pushl(&cld.args, "upload-pack", "--strict", NULL); strvec_pushl(&cld.args, "upload-pack", "--strict", NULL);
strvec_pushf(&cld.args, "--timeout=%u", timeout); strvec_pushf(&cld.args, "--timeout=%u", timeout);
strvec_pushv(&cld.env_array, env->argv); strvec_pushv(&cld.env_array, env->v);
return run_service_command(&cld); return run_service_command(&cld);
} }
@ -492,7 +492,7 @@ static int upload_archive(const struct strvec *env)
struct child_process cld = CHILD_PROCESS_INIT; struct child_process cld = CHILD_PROCESS_INIT;
strvec_push(&cld.args, "upload-archive"); strvec_push(&cld.args, "upload-archive");
strvec_pushv(&cld.env_array, env->argv); strvec_pushv(&cld.env_array, env->v);
return run_service_command(&cld); return run_service_command(&cld);
} }
@ -502,7 +502,7 @@ static int receive_pack(const struct strvec *env)
struct child_process cld = CHILD_PROCESS_INIT; struct child_process cld = CHILD_PROCESS_INIT;
strvec_push(&cld.args, "receive-pack"); strvec_push(&cld.args, "receive-pack");
strvec_pushv(&cld.env_array, env->argv); strvec_pushv(&cld.env_array, env->v);
return run_service_command(&cld); return run_service_command(&cld);
} }
@ -927,7 +927,7 @@ static void handle(int incoming, struct sockaddr *addr, socklen_t addrlen)
#endif #endif
} }
cld.argv = cld_argv.argv; cld.argv = cld_argv.v;
cld.in = incoming; cld.in = incoming;
cld.out = dup(incoming); cld.out = dup(incoming);

2
diff.c
Просмотреть файл

@ -4239,7 +4239,7 @@ static void run_external_diff(const char *pgm,
diff_free_filespec_data(one); diff_free_filespec_data(one);
diff_free_filespec_data(two); diff_free_filespec_data(two);
if (run_command_v_opt_cd_env(argv.argv, RUN_USING_SHELL, NULL, env.argv)) if (run_command_v_opt_cd_env(argv.v, RUN_USING_SHELL, NULL, env.v))
die(_("external diff died, stopping at %s"), name); die(_("external diff died, stopping at %s"), name);
remove_tempfile(); remove_tempfile();

Просмотреть файл

@ -164,7 +164,7 @@ static const char *getenv_safe(struct strvec *argv, const char *name)
return NULL; return NULL;
strvec_push(argv, value); strvec_push(argv, value);
return argv->argv[argv->argc - 1]; return argv->v[argv->nr - 1];
} }
void setup_git_env(const char *git_dir) void setup_git_env(const char *git_dir)

Просмотреть файл

@ -324,7 +324,7 @@ const char **prepare_git_cmd(struct strvec *out, const char **argv)
{ {
strvec_push(out, "git"); strvec_push(out, "git");
strvec_pushv(out, argv); strvec_pushv(out, argv);
return out->argv; return out->v;
} }
int execv_git_cmd(const char **argv) int execv_git_cmd(const char **argv)
@ -332,10 +332,10 @@ int execv_git_cmd(const char **argv)
struct strvec nargv = STRVEC_INIT; struct strvec nargv = STRVEC_INIT;
prepare_git_cmd(&nargv, argv); prepare_git_cmd(&nargv, argv);
trace_argv_printf(nargv.argv, "trace: exec:"); trace_argv_printf(nargv.v, "trace: exec:");
/* execvp() can only ever return if it fails */ /* execvp() can only ever return if it fails */
sane_execvp("git", (char **)nargv.argv); sane_execvp("git", (char **)nargv.v);
trace_printf("trace: exec failed: %s\n", strerror(errno)); trace_printf("trace: exec failed: %s\n", strerror(errno));

10
git.c
Просмотреть файл

@ -352,7 +352,7 @@ static int handle_alias(int *argcp, const char ***argv)
strvec_push(&child.args, alias_string + 1); strvec_push(&child.args, alias_string + 1);
strvec_pushv(&child.args, (*argv) + 1); strvec_pushv(&child.args, (*argv) + 1);
trace2_cmd_alias(alias_command, child.args.argv); trace2_cmd_alias(alias_command, child.args.v);
trace2_cmd_list_config(); trace2_cmd_list_config();
trace2_cmd_list_env_vars(); trace2_cmd_list_env_vars();
trace2_cmd_name("_run_shell_alias_"); trace2_cmd_name("_run_shell_alias_");
@ -667,7 +667,7 @@ static void handle_builtin(int argc, const char **argv)
} }
argc++; argc++;
argv = args.argv; argv = args.v;
} }
builtin = get_builtin(cmd); builtin = get_builtin(cmd);
@ -701,7 +701,7 @@ static void execv_dashed_external(const char **argv)
* The code in run_command() logs trace2 child_start/child_exit * The code in run_command() logs trace2 child_start/child_exit
* events, so we do not need to report exec/exec_result events here. * events, so we do not need to report exec/exec_result events here.
*/ */
trace_argv_printf(cmd.args.argv, "trace: exec:"); trace_argv_printf(cmd.args.v, "trace: exec:");
/* /*
* If we fail because the command is not found, it is * If we fail because the command is not found, it is
@ -762,13 +762,13 @@ static int run_argv(int *argcp, const char ***argv)
for (i = 0; i < *argcp; i++) for (i = 0; i < *argcp; i++)
strvec_push(&args, (*argv)[i]); strvec_push(&args, (*argv)[i]);
trace_argv_printf(args.argv, "trace: exec:"); trace_argv_printf(args.v, "trace: exec:");
/* /*
* if we fail because the command is not found, it is * if we fail because the command is not found, it is
* OK to return. Otherwise, we just pass along the status code. * OK to return. Otherwise, we just pass along the status code.
*/ */
i = run_command_v_opt_tr2(args.argv, RUN_SILENT_EXEC_FAILURE | i = run_command_v_opt_tr2(args.v, RUN_SILENT_EXEC_FAILURE |
RUN_CLEAN_ON_EXIT | RUN_WAIT_AFTER_CLEAN, "git_alias"); RUN_CLEAN_ON_EXIT | RUN_WAIT_AFTER_CLEAN, "git_alias");
if (i >= 0 || errno != ENOENT) if (i >= 0 || errno != ENOENT)
exit(i); exit(i);

Просмотреть файл

@ -355,8 +355,8 @@ struct git_graph *graph_init(struct rev_info *opt)
parse_graph_colors_config(&custom_colors, string); parse_graph_colors_config(&custom_colors, string);
free(string); free(string);
/* graph_set_column_colors takes a max-index, not a count */ /* graph_set_column_colors takes a max-index, not a count */
graph_set_column_colors(custom_colors.argv, graph_set_column_colors(custom_colors.v,
custom_colors.argc - 1); custom_colors.nr - 1);
} }
} }

Просмотреть файл

@ -1931,7 +1931,7 @@ int cmd_main(int argc, const char **argv)
strvec_pushf(&commit_argv, "^%s", strvec_pushf(&commit_argv, "^%s",
oid_to_hex(&ref->old_oid)); oid_to_hex(&ref->old_oid));
repo_init_revisions(the_repository, &revs, setup_git_directory()); repo_init_revisions(the_repository, &revs, setup_git_directory());
setup_revisions(commit_argv.argc, commit_argv.argv, &revs, NULL); setup_revisions(commit_argv.nr, commit_argv.v, &revs, NULL);
revs.edge_hint = 0; /* just in case */ revs.edge_hint = 0; /* just in case */
/* Generate a list of objects that need to be pushed */ /* Generate a list of objects that need to be pushed */

Просмотреть файл

@ -15,11 +15,11 @@ static int ref_match(const struct strvec *prefixes, const char *refname)
{ {
int i; int i;
if (!prefixes->argc) if (!prefixes->nr)
return 1; /* no restriction */ return 1; /* no restriction */
for (i = 0; i < prefixes->argc; i++) { for (i = 0; i < prefixes->nr; i++) {
const char *prefix = prefixes->argv[i]; const char *prefix = prefixes->v[i];
if (starts_with(refname, prefix)) if (starts_with(refname, prefix))
return 1; return 1;

Просмотреть файл

@ -33,7 +33,7 @@ int try_merge_command(struct repository *r,
for (j = remotes; j; j = j->next) for (j = remotes; j; j = j->next)
strvec_push(&args, merge_argument(j->item)); strvec_push(&args, merge_argument(j->item));
ret = run_command_v_opt(args.argv, RUN_GIT_CMD); ret = run_command_v_opt(args.v, RUN_GIT_CMD);
strvec_clear(&args); strvec_clear(&args);
discard_index(r->index); discard_index(r->index);

Просмотреть файл

@ -652,7 +652,7 @@ void parse_pathspec_file(struct pathspec *pathspec, unsigned magic_mask,
if (in != stdin) if (in != stdin)
fclose(in); fclose(in);
parse_pathspec(pathspec, magic_mask, flags, prefix, parsed_file.argv); parse_pathspec(pathspec, magic_mask, flags, prefix, parsed_file.v);
strvec_clear(&parsed_file); strvec_clear(&parsed_file);
} }

Просмотреть файл

@ -67,7 +67,7 @@ static int read_patches(const char *range, struct string_list *list,
"--notes", "--notes",
NULL); NULL);
if (other_arg) if (other_arg)
strvec_pushv(&cp.args, other_arg->argv); strvec_pushv(&cp.args, other_arg->v);
strvec_push(&cp.args, range); strvec_push(&cp.args, range);
cp.out = -1; cp.out = -1;
cp.no_stdin = 1; cp.no_stdin = 1;

Просмотреть файл

@ -1918,9 +1918,9 @@ static void find_longest_prefixes(struct string_list *out,
struct strbuf prefix = STRBUF_INIT; struct strbuf prefix = STRBUF_INIT;
strvec_pushv(&sorted, patterns); strvec_pushv(&sorted, patterns);
QSORT(sorted.argv, sorted.argc, qsort_strcmp); QSORT(sorted.v, sorted.nr, qsort_strcmp);
find_longest_prefixes_1(out, &prefix, sorted.argv, sorted.argc); find_longest_prefixes_1(out, &prefix, sorted.v, sorted.nr);
strvec_clear(&sorted); strvec_clear(&sorted);
strbuf_release(&prefix); strbuf_release(&prefix);

Просмотреть файл

@ -1190,7 +1190,7 @@ static int fetch_git(struct discovery *heads,
rpc.service_name = "git-upload-pack", rpc.service_name = "git-upload-pack",
rpc.gzip_request = 1; rpc.gzip_request = 1;
err = rpc_service(&rpc, heads, args.argv, &preamble, &rpc_result); err = rpc_service(&rpc, heads, args.v, &preamble, &rpc_result);
if (rpc_result.len) if (rpc_result.len)
write_or_die(1, rpc_result.buf, rpc_result.len); write_or_die(1, rpc_result.buf, rpc_result.len);
strbuf_release(&rpc_result); strbuf_release(&rpc_result);
@ -1325,7 +1325,7 @@ static int push_git(struct discovery *heads, int nr_spec, const char **specs)
memset(&rpc, 0, sizeof(rpc)); memset(&rpc, 0, sizeof(rpc));
rpc.service_name = "git-receive-pack", rpc.service_name = "git-receive-pack",
err = rpc_service(&rpc, heads, args.argv, &preamble, &rpc_result); err = rpc_service(&rpc, heads, args.v, &preamble, &rpc_result);
if (rpc_result.len) if (rpc_result.len)
write_or_die(1, rpc_result.buf, rpc_result.len); write_or_die(1, rpc_result.buf, rpc_result.len);
strbuf_release(&rpc_result); strbuf_release(&rpc_result);
@ -1366,7 +1366,7 @@ static void parse_push(struct strbuf *buf)
break; break;
} while (1); } while (1);
ret = push(specs.argc, specs.argv); ret = push(specs.nr, specs.v);
printf("\n"); printf("\n");
fflush(stdout); fflush(stdout);

Просмотреть файл

@ -1919,7 +1919,7 @@ static int stat_branch_pair(const char *branch_name, const char *base,
strvec_push(&argv, "--"); strvec_push(&argv, "--");
repo_init_revisions(the_repository, &revs, NULL); repo_init_revisions(the_repository, &revs, NULL);
setup_revisions(argv.argc, argv.argv, &revs, NULL); setup_revisions(argv.nr, argv.v, &revs, NULL);
if (prepare_revision_walk(&revs)) if (prepare_revision_walk(&revs))
die(_("revision walk setup failed")); die(_("revision walk setup failed"));

Просмотреть файл

@ -2767,7 +2767,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s
got_rev_arg = 1; got_rev_arg = 1;
} }
if (prune_data.argc) { if (prune_data.nr) {
/* /*
* If we need to introduce the magic "a lone ':' means no * If we need to introduce the magic "a lone ':' means no
* pathspec whatsoever", here is the place to do so. * pathspec whatsoever", here is the place to do so.
@ -2783,7 +2783,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s
* } * }
*/ */
parse_pathspec(&revs->prune_data, 0, 0, parse_pathspec(&revs->prune_data, 0, 0,
revs->prefix, prune_data.argv); revs->prefix, prune_data.v);
} }
strvec_clear(&prune_data); strvec_clear(&prune_data);

Просмотреть файл

@ -287,7 +287,7 @@ static const char **prepare_shell_cmd(struct strvec *out, const char **argv)
} }
strvec_pushv(out, argv); strvec_pushv(out, argv);
return out->argv; return out->v;
} }
#ifndef GIT_WINDOWS_NATIVE #ifndef GIT_WINDOWS_NATIVE
@ -426,11 +426,11 @@ static int prepare_cmd(struct strvec *out, const struct child_process *cmd)
* there are dir separator characters, we have exec attempt to invoke * there are dir separator characters, we have exec attempt to invoke
* the command directly. * the command directly.
*/ */
if (!has_dir_sep(out->argv[1])) { if (!has_dir_sep(out->v[1])) {
char *program = locate_in_PATH(out->argv[1]); char *program = locate_in_PATH(out->v[1]);
if (program) { if (program) {
free((char *)out->argv[1]); free((char *)out->v[1]);
out->argv[1] = program; out->v[1] = program;
} else { } else {
strvec_clear(out); strvec_clear(out);
errno = ENOENT; errno = ENOENT;
@ -672,9 +672,9 @@ int start_command(struct child_process *cmd)
char *str; char *str;
if (!cmd->argv) if (!cmd->argv)
cmd->argv = cmd->args.argv; cmd->argv = cmd->args.v;
if (!cmd->env) if (!cmd->env)
cmd->env = cmd->env_array.argv; cmd->env = cmd->env_array.v;
/* /*
* In case of errors we must keep the promise to close FDs * In case of errors we must keep the promise to close FDs
@ -846,10 +846,10 @@ fail_pipe:
* be used in the event exec failed with ENOEXEC at which point * be used in the event exec failed with ENOEXEC at which point
* we will try to interpret the command using 'sh'. * we will try to interpret the command using 'sh'.
*/ */
execve(argv.argv[1], (char *const *) argv.argv + 1, execve(argv.v[1], (char *const *) argv.v + 1,
(char *const *) childenv); (char *const *) childenv);
if (errno == ENOEXEC) if (errno == ENOEXEC)
execve(argv.argv[0], (char *const *) argv.argv, execve(argv.v[0], (char *const *) argv.v,
(char *const *) childenv); (char *const *) childenv);
if (errno == ENOENT) { if (errno == ENOENT) {
@ -1874,7 +1874,7 @@ int run_auto_gc(int quiet)
strvec_pushl(&argv_gc_auto, "gc", "--auto", NULL); strvec_pushl(&argv_gc_auto, "gc", "--auto", NULL);
if (quiet) if (quiet)
strvec_push(&argv_gc_auto, "--quiet"); strvec_push(&argv_gc_auto, "--quiet");
status = run_command_v_opt(argv_gc_auto.argv, RUN_GIT_CMD); status = run_command_v_opt(argv_gc_auto.v, RUN_GIT_CMD);
strvec_clear(&argv_gc_auto); strvec_clear(&argv_gc_auto);
return status; return status;
} }

Просмотреть файл

@ -2761,7 +2761,7 @@ static int reset_merge(const struct object_id *oid)
if (!is_null_oid(oid)) if (!is_null_oid(oid))
strvec_push(&argv, oid_to_hex(oid)); strvec_push(&argv, oid_to_hex(oid));
ret = run_command_v_opt(argv.argv, RUN_GIT_CMD); ret = run_command_v_opt(argv.v, RUN_GIT_CMD);
strvec_clear(&argv); strvec_clear(&argv);
return ret; return ret;
@ -3135,7 +3135,7 @@ static int do_exec(struct repository *r, const char *command_line)
strvec_pushf(&child_env, "GIT_WORK_TREE=%s", strvec_pushf(&child_env, "GIT_WORK_TREE=%s",
absolute_path(get_git_work_tree())); absolute_path(get_git_work_tree()));
status = run_command_v_opt_cd_env(child_argv, RUN_USING_SHELL, NULL, status = run_command_v_opt_cd_env(child_argv, RUN_USING_SHELL, NULL,
child_env.argv); child_env.v);
/* force re-reading of the cache */ /* force re-reading of the cache */
if (discard_index(r->index) < 0 || repo_read_index(r) < 0) if (discard_index(r->index) < 0 || repo_read_index(r) < 0)

Просмотреть файл

@ -146,9 +146,9 @@ int has_capability(const struct strvec *keys, const char *capability,
const char **value) const char **value)
{ {
int i; int i;
for (i = 0; i < keys->argc; i++) { for (i = 0; i < keys->nr; i++) {
const char *out; const char *out;
if (skip_prefix(keys->argv[i], capability, &out) && if (skip_prefix(keys->v[i], capability, &out) &&
(!*out || *out == '=')) { (!*out || *out == '=')) {
if (value) { if (value) {
if (*out == '=') if (*out == '=')
@ -223,7 +223,7 @@ static int process_request(void)
* If no command and no keys were given then the client * If no command and no keys were given then the client
* wanted to terminate the connection. * wanted to terminate the connection.
*/ */
if (!keys.argc) if (!keys.nr)
return 1; return 1;
/* /*

Просмотреть файл

@ -6,25 +6,25 @@ const char *empty_strvec[] = { NULL };
void strvec_init(struct strvec *array) void strvec_init(struct strvec *array)
{ {
array->argv = empty_strvec; array->v = empty_strvec;
array->argc = 0; array->nr = 0;
array->alloc = 0; array->alloc = 0;
} }
static void strvec_push_nodup(struct strvec *array, const char *value) static void strvec_push_nodup(struct strvec *array, const char *value)
{ {
if (array->argv == empty_strvec) if (array->v == empty_strvec)
array->argv = NULL; array->v = NULL;
ALLOC_GROW(array->argv, array->argc + 2, array->alloc); ALLOC_GROW(array->v, array->nr + 2, array->alloc);
array->argv[array->argc++] = value; array->v[array->nr++] = value;
array->argv[array->argc] = NULL; array->v[array->nr] = NULL;
} }
const char *strvec_push(struct strvec *array, const char *value) const char *strvec_push(struct strvec *array, const char *value)
{ {
strvec_push_nodup(array, xstrdup(value)); strvec_push_nodup(array, xstrdup(value));
return array->argv[array->argc - 1]; return array->v[array->nr - 1];
} }
const char *strvec_pushf(struct strvec *array, const char *fmt, ...) const char *strvec_pushf(struct strvec *array, const char *fmt, ...)
@ -37,7 +37,7 @@ const char *strvec_pushf(struct strvec *array, const char *fmt, ...)
va_end(ap); va_end(ap);
strvec_push_nodup(array, strbuf_detach(&v, NULL)); strvec_push_nodup(array, strbuf_detach(&v, NULL));
return array->argv[array->argc - 1]; return array->v[array->nr - 1];
} }
void strvec_pushl(struct strvec *array, ...) void strvec_pushl(struct strvec *array, ...)
@ -51,19 +51,19 @@ void strvec_pushl(struct strvec *array, ...)
va_end(ap); va_end(ap);
} }
void strvec_pushv(struct strvec *array, const char **argv) void strvec_pushv(struct strvec *array, const char **items)
{ {
for (; *argv; argv++) for (; *items; items++)
strvec_push(array, *argv); strvec_push(array, *items);
} }
void strvec_pop(struct strvec *array) void strvec_pop(struct strvec *array)
{ {
if (!array->argc) if (!array->nr)
return; return;
free((char *)array->argv[array->argc - 1]); free((char *)array->v[array->nr - 1]);
array->argv[array->argc - 1] = NULL; array->v[array->nr - 1] = NULL;
array->argc--; array->nr--;
} }
void strvec_split(struct strvec *array, const char *to_split) void strvec_split(struct strvec *array, const char *to_split)
@ -88,21 +88,21 @@ void strvec_split(struct strvec *array, const char *to_split)
void strvec_clear(struct strvec *array) void strvec_clear(struct strvec *array)
{ {
if (array->argv != empty_strvec) { if (array->v != empty_strvec) {
int i; int i;
for (i = 0; i < array->argc; i++) for (i = 0; i < array->nr; i++)
free((char *)array->argv[i]); free((char *)array->v[i]);
free(array->argv); free(array->v);
} }
strvec_init(array); strvec_init(array);
} }
const char **strvec_detach(struct strvec *array) const char **strvec_detach(struct strvec *array)
{ {
if (array->argv == empty_strvec) if (array->v == empty_strvec)
return xcalloc(1, sizeof(const char *)); return xcalloc(1, sizeof(const char *));
else { else {
const char **ret = array->argv; const char **ret = array->v;
strvec_init(array); strvec_init(array);
return ret; return ret;
} }

Просмотреть файл

@ -2,10 +2,10 @@
#define STRVEC_H #define STRVEC_H
/** /**
* The argv-array API allows one to dynamically build and store * The strvec API allows one to dynamically build and store
* NULL-terminated lists. An argv-array maintains the invariant that the * NULL-terminated arrays of strings. A strvec maintains the invariant that the
* `argv` member always points to a non-NULL array, and that the array is * `items` member always points to a non-NULL array, and that the array is
* always NULL-terminated at the element pointed to by `argv[argc]`. This * always NULL-terminated at the element pointed to by `items[nr]`. This
* makes the result suitable for passing to functions expecting to receive * makes the result suitable for passing to functions expecting to receive
* argv from main(). * argv from main().
* *
@ -22,15 +22,15 @@ extern const char *empty_strvec[];
/** /**
* A single array. This should be initialized by assignment from * A single array. This should be initialized by assignment from
* `STRVEC_INIT`, or by calling `strvec_init`. The `argv` * `STRVEC_INIT`, or by calling `strvec_init`. The `items`
* member contains the actual array; the `argc` member contains the * member contains the actual array; the `nr` member contains the
* number of elements in the array, not including the terminating * number of elements in the array, not including the terminating
* NULL. * NULL.
*/ */
struct strvec { struct strvec {
const char **argv; const char **v;
size_t argc; int nr;
size_t alloc; int alloc;
}; };
#define STRVEC_INIT { empty_strvec, 0, 0 } #define STRVEC_INIT { empty_strvec, 0, 0 }
@ -78,7 +78,7 @@ void strvec_split(struct strvec *, const char *);
void strvec_clear(struct strvec *); void strvec_clear(struct strvec *);
/** /**
* Disconnect the `argv` member from the `strvec` struct and * Disconnect the `items` member from the `strvec` struct and
* return it. The caller is responsible for freeing the memory used * return it. The caller is responsible for freeing the memory used
* by the array, and by the strings it references. After detaching, * by the array, and by the strings it references. After detaching,
* the `strvec` is in a reinitialized state and can be pushed * the `strvec` is in a reinitialized state and can be pushed

Просмотреть файл

@ -269,7 +269,7 @@ int is_submodule_active(struct repository *repo, const char *path)
strvec_push(&args, item->string); strvec_push(&args, item->string);
} }
parse_pathspec(&ps, 0, 0, NULL, args.argv); parse_pathspec(&ps, 0, 0, NULL, args.v);
ret = match_pathspec(repo->index, &ps, path, strlen(path), 0, NULL, 1); ret = match_pathspec(repo->index, &ps, path, strlen(path), 0, NULL, 1);
strvec_clear(&args); strvec_clear(&args);
@ -842,7 +842,7 @@ static void collect_changed_submodules(struct repository *r,
const struct commit *commit; const struct commit *commit;
repo_init_revisions(r, &rev, NULL); repo_init_revisions(r, &rev, NULL);
setup_revisions(argv->argc, argv->argv, &rev, NULL); setup_revisions(argv->nr, argv->v, &rev, NULL);
if (prepare_revision_walk(&rev)) if (prepare_revision_walk(&rev))
die(_("revision walk setup failed")); die(_("revision walk setup failed"));
@ -1014,7 +1014,7 @@ int find_unpushed_submodules(struct repository *r,
struct string_list_item *name; struct string_list_item *name;
struct strvec argv = STRVEC_INIT; struct strvec argv = STRVEC_INIT;
/* argv.argv[0] will be ignored by setup_revisions */ /* argv.v[0] will be ignored by setup_revisions */
strvec_push(&argv, "find_unpushed_submodules"); strvec_push(&argv, "find_unpushed_submodules");
oid_array_for_each_unique(commits, append_oid_to_argv, &argv); oid_array_for_each_unique(commits, append_oid_to_argv, &argv);
strvec_push(&argv, "--not"); strvec_push(&argv, "--not");
@ -1453,7 +1453,7 @@ static int get_next_submodule(struct child_process *cp,
strbuf_addf(err, _("Fetching submodule %s%s\n"), strbuf_addf(err, _("Fetching submodule %s%s\n"),
spf->prefix, ce->name); spf->prefix, ce->name);
strvec_init(&cp->args); strvec_init(&cp->args);
strvec_pushv(&cp->args, spf->args.argv); strvec_pushv(&cp->args, spf->args.v);
strvec_push(&cp->args, default_argv); strvec_push(&cp->args, default_argv);
strvec_push(&cp->args, "--submodule-prefix"); strvec_push(&cp->args, "--submodule-prefix");
@ -1501,7 +1501,7 @@ static int get_next_submodule(struct child_process *cp,
cp->dir = task->repo->gitdir; cp->dir = task->repo->gitdir;
strvec_init(&cp->args); strvec_init(&cp->args);
strvec_pushv(&cp->args, spf->args.argv); strvec_pushv(&cp->args, spf->args.v);
strvec_push(&cp->args, "on-demand"); strvec_push(&cp->args, "on-demand");
strvec_push(&cp->args, "--submodule-prefix"); strvec_push(&cp->args, "--submodule-prefix");
strvec_push(&cp->args, submodule_prefix.buf); strvec_push(&cp->args, submodule_prefix.buf);
@ -1619,8 +1619,8 @@ int fetch_populated_submodules(struct repository *r,
die(_("index file corrupt")); die(_("index file corrupt"));
strvec_push(&spf.args, "fetch"); strvec_push(&spf.args, "fetch");
for (i = 0; i < options->argc; i++) for (i = 0; i < options->nr; i++)
strvec_push(&spf.args, options->argv[i]); strvec_push(&spf.args, options->v[i]);
strvec_push(&spf.args, "--recurse-submodules-default"); strvec_push(&spf.args, "--recurse-submodules-default");
/* default value, "--submodule-prefix" and its value are added later */ /* default value, "--submodule-prefix" and its value are added later */

Просмотреть файл

@ -248,7 +248,7 @@ static int quote_stress_test(int argc, const char **argv)
else else
strvec_pushl(&args, "test-tool", "run-command", strvec_pushl(&args, "test-tool", "run-command",
"quote-echo", NULL); "quote-echo", NULL);
arg_offset = args.argc; arg_offset = args.nr;
if (argc > 0) { if (argc > 0) {
trials = 1; trials = 1;
@ -275,13 +275,13 @@ static int quote_stress_test(int argc, const char **argv)
if (i < skip) if (i < skip)
continue; continue;
cp.argv = args.argv; cp.argv = args.v;
strbuf_reset(&out); strbuf_reset(&out);
if (pipe_command(&cp, NULL, 0, &out, 0, NULL, 0) < 0) if (pipe_command(&cp, NULL, 0, &out, 0, NULL, 0) < 0)
return error("Failed to spawn child process"); return error("Failed to spawn child process");
for (j = 0, k = 0; j < arg_count; j++) { for (j = 0, k = 0; j < arg_count; j++) {
const char *arg = args.argv[j + arg_offset]; const char *arg = args.v[j + arg_offset];
if (strcmp(arg, out.buf + k)) if (strcmp(arg, out.buf + k))
ret = error("incorrectly quoted arg: '%s', " ret = error("incorrectly quoted arg: '%s', "
@ -298,7 +298,7 @@ static int quote_stress_test(int argc, const char **argv)
fprintf(stderr, "Trial #%d failed. Arguments:\n", i); fprintf(stderr, "Trial #%d failed. Arguments:\n", i);
for (j = 0; j < arg_count; j++) for (j = 0; j < arg_count; j++)
fprintf(stderr, "arg #%d: '%s'\n", fprintf(stderr, "arg #%d: '%s'\n",
(int)j, args.argv[j + arg_offset]); (int)j, args.v[j + arg_offset]);
strbuf_release(&out); strbuf_release(&out);
strvec_clear(&args); strvec_clear(&args);

Просмотреть файл

@ -283,7 +283,7 @@ const char **tmp_objdir_env(const struct tmp_objdir *t)
{ {
if (!t) if (!t)
return NULL; return NULL;
return t->env.argv; return t->env.v;
} }
void tmp_objdir_add_as_alternate(const struct tmp_objdir *t) void tmp_objdir_add_as_alternate(const struct tmp_objdir *t)

Просмотреть файл

@ -138,7 +138,7 @@ static struct child_process *get_helper(struct transport *transport)
strvec_pushf(&helper->env_array, "%s=%s", strvec_pushf(&helper->env_array, "%s=%s",
GIT_DIR_ENVIRONMENT, get_git_dir()); GIT_DIR_ENVIRONMENT, get_git_dir());
helper->trace2_child_class = helper->args.argv[0]; /* "remote-<name>" */ helper->trace2_child_class = helper->args.v[0]; /* "remote-<name>" */
code = start_command(helper); code = start_command(helper);
if (code < 0 && errno == ENOENT) if (code < 0 && errno == ENOENT)

Просмотреть файл

@ -897,7 +897,7 @@ static int send_shallow_list(struct upload_pack_data *data)
struct object *o = data->want_obj.objects[i].item; struct object *o = data->want_obj.objects[i].item;
strvec_push(&av, oid_to_hex(&o->oid)); strvec_push(&av, oid_to_hex(&o->oid));
} }
deepen_by_rev_list(data, av.argc, av.argv); deepen_by_rev_list(data, av.nr, av.v);
strvec_clear(&av); strvec_clear(&av);
ret = 1; ret = 1;
} else { } else {