use strvec_pushv() to add another strvec

Add and apply a semantic patch that simplifies the code by letting
strvec_pushv() append the items of a second strvec instead of pushing
them one by one.

Suggested-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Junio C Hamano 2026-03-24 12:26:58 -07:00
parent 2d733b9660
commit 250e977a2b
5 changed files with 51 additions and 13 deletions

View File

@ -182,8 +182,7 @@ static struct replay_opts get_replay_opts(const struct rebase_options *opts)

replay.signoff = opts->signoff;

for (size_t i = 0; i < opts->trailer_args.nr; i++)
strvec_push(&replay.trailer_args, opts->trailer_args.v[i]);
strvec_pushv(&replay.trailer_args, opts->trailer_args.v);

replay.allow_ff = !(opts->flags & REBASE_FORCE);
if (opts->allow_rerere_autoupdate)

View File

@ -1024,12 +1024,8 @@ static int get_pack(struct fetch_pack_args *args,
fsck_msg_types.buf);
}

if (index_pack_args) {
int i;

for (i = 0; i < cmd.args.nr; i++)
strvec_push(index_pack_args, cmd.args.v[i]);
}
if (index_pack_args)
strvec_pushv(index_pack_args, cmd.args.v);

sigchain_push(SIGPIPE, SIG_IGN);


3
git.c
View File

@ -877,8 +877,7 @@ static int run_argv(struct strvec *args)
commit_pager_choice();

strvec_push(&cmd.args, "git");
for (size_t i = 0; i < args->nr; i++)
strvec_push(&cmd.args, args->v[i]);
strvec_pushv(&cmd.args, args->v);

trace_argv_printf(cmd.args.v, "trace: exec:");


View File

@ -1815,7 +1815,6 @@ int fetch_submodules(struct repository *r,
int default_option,
int quiet, int max_parallel_jobs)
{
int i;
struct submodule_parallel_fetch spf = SPF_INIT;
const struct run_process_parallel_opts opts = {
.tr2_category = "submodule",
@ -1842,8 +1841,7 @@ int fetch_submodules(struct repository *r,
die(_("index file corrupt"));

strvec_push(&spf.args, "fetch");
for (i = 0; i < options->nr; i++)
strvec_push(&spf.args, options->v[i]);
strvec_pushv(&spf.args, options->v);
strvec_push(&spf.args, "--recurse-submodules-default");
/* default value, "--submodule-prefix" and its value are added later */


View File

@ -0,0 +1,46 @@
@@
type T;
identifier i;
expression dst;
struct strvec *src_ptr;
struct strvec src_arr;
@@
(
- for (T i = 0; i < src_ptr->nr; i++) { strvec_push(dst, src_ptr->v[i]); }
+ strvec_pushv(dst, src_ptr->v);
|
- for (T i = 0; i < src_arr.nr; i++) { strvec_push(dst, src_arr.v[i]); }
+ strvec_pushv(dst, src_arr.v);
)

@ separate_loop_index @
type T;
identifier i;
expression dst;
struct strvec *src_ptr;
struct strvec src_arr;
@@
T i;
...
(
- for (i = 0; i < src_ptr->nr; i++) { strvec_push(dst, src_ptr->v[i]); }
+ strvec_pushv(dst, src_ptr->v);
|
- for (i = 0; i < src_arr.nr; i++) { strvec_push(dst, src_arr.v[i]); }
+ strvec_pushv(dst, src_arr.v);
)

@ unused_loop_index extends separate_loop_index @
@@
{
...
- T i;
... when != i
}

@ depends on unused_loop_index @
@@
if (...)
- {
strvec_pushv(...);
- }