586
initialized_fetch_ref_tips = 0;
587
}
588
589
-int fetch_populated_submodules(int num_options, const char **options,
589
+int fetch_populated_submodules(const struct argv_array *options,
590
const char *prefix, int command_line_option,
591
int quiet)
592
{
593
- int i, result = 0, argc = 0, default_argc;
593
+ int i, result = 0;
594
struct child_process cp;
595
- const char **argv;
595
+ struct argv_array argv = ARGV_ARRAY_INIT;
596
struct string_list_item *name_for_path;
597
const char *work_tree = get_git_work_tree();
598
if (!work_tree)
602
if (read_cache() < 0)
603
die("index file corrupt");
604
605
- /* 6: "fetch" (options) --recurse-submodules-default default "--submodule-prefix" prefix NULL */
606
- argv = xcalloc(num_options + 6, sizeof(const char *));
607
- argv[argc++] = "fetch";
608
- for (i = 0; i < num_options; i++)
609
- argv[argc++] = options[i];
610
- argv[argc++] = "--recurse-submodules-default";
611
- default_argc = argc++;
612
- argv[argc++] = "--submodule-prefix";
605
+ argv_array_push(&argv, "fetch");
606
+ for (i = 0; i < options->argc; i++)
607
+ argv_array_push(&argv, options->argv[i]);
608
+ argv_array_push(&argv, "--recurse-submodules-default");
609
+ /* default value, "--submodule-prefix" and its value are added later */
610
611
memset(&cp, 0, sizeof(cp));
615
- cp.argv = argv;
612
cp.env = local_repo_env;
613
cp.git_cmd = 1;
614
cp.no_stdin = 1;
668
if (!quiet)
669
printf("Fetching submodule %s%s\n", prefix, ce->name);
670
cp.dir = submodule_path.buf;
675
- argv[default_argc] = default_argv;
676
- argv[argc] = submodule_prefix.buf;
671
+ argv_array_push(&argv, default_argv);
672
+ argv_array_push(&argv, "--submodule-prefix");
673
+ argv_array_push(&argv, submodule_prefix.buf);
674
+ cp.argv = argv.argv;
675
if (run_command(&cp))
676
result = 1;
677
+ argv_array_pop(&argv);
678
+ argv_array_pop(&argv);
679
+ argv_array_pop(&argv);
680
}
681
strbuf_release(&submodule_path);
682
strbuf_release(&submodule_git_dir);
683
strbuf_release(&submodule_prefix);
684
}
684
- free(argv);
685
+ argv_array_clear(&argv);
686
out:
687
string_list_clear(&changed_submodule_paths, 1);
688
return result;