|
8 | 8 | #include "diffcore.h"
|
9 | 9 | #include "quote.h"
|
10 | 10 | #include "run-command.h"
|
| 11 | +#include "argv-array.h" |
11 | 12 | #include "remote.h"
|
12 | 13 | #include "refs.h"
|
13 | 14 | #include "submodule.h"
|
@@ -663,29 +664,30 @@ static void wt_status_print_submodule_summary(struct wt_status *s, int uncommitt
|
663 | 664 | char summary_limit[64];
|
664 | 665 | char index[PATH_MAX];
|
665 | 666 | const char *env[] = { NULL, NULL };
|
666 |
| - const char *argv[8]; |
667 |
| - |
668 |
| - env[0] = index; |
669 |
| - argv[0] = "submodule"; |
670 |
| - argv[1] = "summary"; |
671 |
| - argv[2] = uncommitted ? "--files" : "--cached"; |
672 |
| - argv[3] = "--for-status"; |
673 |
| - argv[4] = "--summary-limit"; |
674 |
| - argv[5] = summary_limit; |
675 |
| - argv[6] = uncommitted ? NULL : (s->amend ? "HEAD^" : "HEAD"); |
676 |
| - argv[7] = NULL; |
| 667 | + struct argv_array argv = ARGV_ARRAY_INIT; |
677 | 668 |
|
678 | 669 | sprintf(summary_limit, "%d", s->submodule_summary);
|
679 | 670 | snprintf(index, sizeof(index), "GIT_INDEX_FILE=%s", s->index_file);
|
680 | 671 |
|
| 672 | + env[0] = index; |
| 673 | + argv_array_push(&argv, "submodule"); |
| 674 | + argv_array_push(&argv, "summary"); |
| 675 | + argv_array_push(&argv, uncommitted ? "--files" : "--cached"); |
| 676 | + argv_array_push(&argv, "--for-status"); |
| 677 | + argv_array_push(&argv, "--summary-limit"); |
| 678 | + argv_array_push(&argv, summary_limit); |
| 679 | + if (!uncommitted) |
| 680 | + argv_array_push(&argv, s->amend ? "HEAD^" : "HEAD"); |
| 681 | + |
681 | 682 | memset(&sm_summary, 0, sizeof(sm_summary));
|
682 |
| - sm_summary.argv = argv; |
| 683 | + sm_summary.argv = argv.argv; |
683 | 684 | sm_summary.env = env;
|
684 | 685 | sm_summary.git_cmd = 1;
|
685 | 686 | sm_summary.no_stdin = 1;
|
686 | 687 | fflush(s->fp);
|
687 | 688 | sm_summary.out = dup(fileno(s->fp)); /* run_command closes it */
|
688 | 689 | run_command(&sm_summary);
|
| 690 | + argv_array_clear(&argv); |
689 | 691 | }
|
690 | 692 |
|
691 | 693 | static void wt_status_print_other(struct wt_status *s,
|
|
0 commit comments