wt-status: use argv_array API

No behavior change, but two slight code reorganization: argv_array_push doesn't accept NULL strings, and duplicates its argument hence summary_limit must be written to before being inserted into argv. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Matthieu Moy committed Sep 6, 2013 at 19:43 UTC bb7e32e383d66c290d11174108b2944532905df6
1 file changed +14 -12
wt-status.c
+14 -12
@@ -8,6 +8,7 @@
8 #include "diffcore.h"
9 #include "quote.h"
10 #include "run-command.h"
11 +#include "argv-array.h"
12 #include "remote.h"
13 #include "refs.h"
14 #include "submodule.h"
@@ -663,29 +664,30 @@ static void wt_status_print_submodule_summary(struct wt_status *s, int uncommitt
664 char summary_limit[64];
665 char index[PATH_MAX];
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;
668
669 sprintf(summary_limit, "%d", s->submodule_summary);
670 snprintf(index, sizeof(index), "GIT_INDEX_FILE=%s", s->index_file);
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 +
682 memset(&sm_summary, 0, sizeof(sm_summary));
682 - sm_summary.argv = argv;
683 + sm_summary.argv = argv.argv;
684 sm_summary.env = env;
685 sm_summary.git_cmd = 1;
686 sm_summary.no_stdin = 1;
687 fflush(s->fp);
688 sm_summary.out = dup(fileno(s->fp)); /* run_command closes it */
689 run_command(&sm_summary);
690 + argv_array_clear(&argv);
691 }
692
693 static void wt_status_print_other(struct wt_status *s,