wt-status: use argv_array for environment
PATCH 1/2 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 <[email protected]>
--- wt-status.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)
wt-status.c +4 -5
@@ -735,8 +735,7 @@ static void wt_status_print_submodule_summary(struct wt_status *s, int uncommitt {struct child_process sm_summary;char summary_limit[64 ]; -char index[PATH_MAX ]; -const char *env[] = {NULL ,NULL }; +struct argv_array env =ARGV_ARRAY_INIT ;struct argv_array argv =ARGV_ARRAY_INIT ;struct strbuf cmd_stdout =STRBUF_INIT ;struct strbuf summary =STRBUF_INIT ;
@@ -744,9 +743,8 @@ static void wt_status_print_submodule_summary(struct wt_status *s, int uncommittsize_t len;sprintf (summary_limit,"%d" , s->submodule_summary); -snprintf (index,sizeof (index),"GIT_INDEX_FILE=%s" , s->index_file); +argv_array_pushf (&env,"GIT_INDEX_FILE=%s" , s->index_file); - env[0 ] = index;argv_array_push (&argv,"submodule" );argv_array_push (&argv,"summary" );argv_array_push (&argv, uncommitted ?"--files" :"--cached" );
@@ -758,13 +756,14 @@ static void wt_status_print_submodule_summary(struct wt_status *s, int uncommittmemset (&sm_summary,0 ,sizeof (sm_summary)); sm_summary.argv = argv.argv; - sm_summary.env = env; + sm_summary.env = env.argv; sm_summary.git_cmd =1 ; sm_summary.no_stdin =1 ;fflush (s->fp); sm_summary.out =-1 ;run_command (&sm_summary); +argv_array_clear (&env);argv_array_clear (&argv); len =strbuf_read (&cmd_stdout, sm_summary.out,1024 );
Signature · 1 line
2.0.0
PATCH 2/2 wt-status: simplify building of summary limit argument
Use argv_array_pushf for building the number string for the option --summary-limit directly instead of using an intermediate buffer.
Signed-off-by Rene Scharfe <[email protected]>
--- wt-status.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
wt-status.c +1 -3
@@ -734,7 +734,6 @@ static void wt_status_print_changed(struct wt_status *s)static void wt_status_print_submodule_summary (struct wt_status *s,int uncommitted) {struct child_process sm_summary; -char summary_limit[64 ];struct argv_array env =ARGV_ARRAY_INIT ;struct argv_array argv =ARGV_ARRAY_INIT ;struct strbuf cmd_stdout =STRBUF_INIT ;
@@ -742,7 +741,6 @@ static void wt_status_print_submodule_summary(struct wt_status *s, int uncommittchar *summary_content;size_t len; -sprintf (summary_limit,"%d" , s->submodule_summary);argv_array_pushf (&env,"GIT_INDEX_FILE=%s" , s->index_file);argv_array_push (&argv,"submodule" );
@@ -750,7 +748,7 @@ static void wt_status_print_submodule_summary(struct wt_status *s, int uncommittargv_array_push (&argv, uncommitted ?"--files" :"--cached" );argv_array_push (&argv,"--for-status" );argv_array_push (&argv,"--summary-limit" ); -argv_array_push (&argv, summary_limit); +argv_array_pushf (&argv,"%d" , s->submodule_summary);if (!uncommitted)argv_array_push (&argv, s->amend ?"HEAD^" :"HEAD" );
Signature · 1 line
2.0.0
Re: [PATCH 2/2] wt-status: simplify building of summary limit argument
Quoted 3 lines · René Scharfe
Signed-off-by Rene Scharfe <[email protected]>--- wt-status.c | 4 +---
Both patches sound straightforward and good to me.
Signature · 2 lines
Matthieu Moy http://www-verimag.imag.fr/~moy/