wt-status: use argv_array for environment
Instead of using a PATH_MAX buffer, use argv_array for constructing the environment for git submodule summary. This simplifies the code a bit and removes the arbitrary length limit. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
René Scharfe committed
Jun 29, 2014 at 22:47 UTC
85dd6bf4911dc6d08857c234fe3c135abeed2c44
1 file changed
+4
-5
wt-status.c
+4
-5
@@ -735,8 +735,7 @@ static void wt_status_print_submodule_summary(struct wt_status *s, int uncommitt
735
{
736
struct child_process sm_summary;
737
char summary_limit[64];
738
- char index[PATH_MAX];
739
- const char *env[] = { NULL, NULL };
738
+ struct argv_array env = ARGV_ARRAY_INIT;
739
struct argv_array argv = ARGV_ARRAY_INIT;
740
struct strbuf cmd_stdout = STRBUF_INIT;
741
struct strbuf summary = STRBUF_INIT;
@@ -744,9 +743,8 @@ static void wt_status_print_submodule_summary(struct wt_status *s, int uncommitt
743
size_t len;
744
745
sprintf(summary_limit, "%d", s->submodule_summary);
747
- snprintf(index, sizeof(index), "GIT_INDEX_FILE=%s", s->index_file);
746
+ argv_array_pushf(&env, "GIT_INDEX_FILE=%s", s->index_file);
747
749
- env[0] = index;
748
argv_array_push(&argv, "submodule");
749
argv_array_push(&argv, "summary");
750
argv_array_push(&argv, uncommitted ? "--files" : "--cached");
@@ -758,13 +756,14 @@ static void wt_status_print_submodule_summary(struct wt_status *s, int uncommitt
756
757
memset(&sm_summary, 0, sizeof(sm_summary));
758
sm_summary.argv = argv.argv;
761
- sm_summary.env = env;
759
+ sm_summary.env = env.argv;
760
sm_summary.git_cmd = 1;
761
sm_summary.no_stdin = 1;
762
fflush(s->fp);
763
sm_summary.out = -1;
764
765
run_command(&sm_summary);
766
+ argv_array_clear(&env);
767
argv_array_clear(&argv);
768
769
len = strbuf_read(&cmd_stdout, sm_summary.out, 1024);