Skip to content

Commit bb7e32e

Browse files
moygitster
authored andcommitted
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 <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 1686e2c commit bb7e32e

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

wt-status.c

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include "diffcore.h"
99
#include "quote.h"
1010
#include "run-command.h"
11+
#include "argv-array.h"
1112
#include "remote.h"
1213
#include "refs.h"
1314
#include "submodule.h"
@@ -663,29 +664,30 @@ static void wt_status_print_submodule_summary(struct wt_status *s, int uncommitt
663664
char summary_limit[64];
664665
char index[PATH_MAX];
665666
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;
677668

678669
sprintf(summary_limit, "%d", s->submodule_summary);
679670
snprintf(index, sizeof(index), "GIT_INDEX_FILE=%s", s->index_file);
680671

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+
681682
memset(&sm_summary, 0, sizeof(sm_summary));
682-
sm_summary.argv = argv;
683+
sm_summary.argv = argv.argv;
683684
sm_summary.env = env;
684685
sm_summary.git_cmd = 1;
685686
sm_summary.no_stdin = 1;
686687
fflush(s->fp);
687688
sm_summary.out = dup(fileno(s->fp)); /* run_command closes it */
688689
run_command(&sm_summary);
690+
argv_array_clear(&argv);
689691
}
690692

691693
static void wt_status_print_other(struct wt_status *s,

0 commit comments

Comments
 (0)