transport: simplify fetch_objs_via_rsync() using argv_array
PATCH 1/1 transport: simplify fetch_objs_via_rsync() using argv_array
Use the existing argv_array member instead of building the arguments list using a string array and a strbuf. This way we don't need magic number constants and allocations are cleaned up for us automatically by run_command().
Signed-off-by Rene Scharfe <[email protected]>
--- transport.c | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-)
transport.c +8 -20
@@ -263,32 +263,20 @@ static struct ref *get_refs_via_rsync(struct transport *transport, int for_push)static int fetch_objs_via_rsync (struct transport *transport,int nr_objs,struct ref **to_fetch) { -struct strbuf buf =STRBUF_INIT ;struct child_process rsync; -const char *args[8 ]; -int result; - -strbuf_addstr (&buf,rsync_url (transport->url)); -strbuf_addstr (&buf,"/objects/" );memset (&rsync,0 ,sizeof (rsync)); - rsync.argv = args; rsync.stdout_to_stderr =1 ; - args[0 ] ="rsync" ; - args[1 ] = (transport->verbose >1 ) ?"-rv" :"-r" ; - args[2 ] ="--ignore-existing" ; - args[3 ] ="--exclude" ; - args[4 ] ="info" ; - args[5 ] = buf.buf; - args[6 ] =get_object_directory (); - args[7 ] =NULL ; +argv_array_push (&rsync.args,"rsync" ); +argv_array_push (&rsync.args, (transport->verbose >1 ) ?"-rv" :"-r" ); +argv_array_push (&rsync.args,"--ignore-existing" ); +argv_array_push (&rsync.args,"--exclude" ); +argv_array_push (&rsync.args,"info" ); +argv_array_pushf (&rsync.args,"%s/objects/" ,rsync_url (transport->url)); +argv_array_push (&rsync.args,get_object_directory ());/* NEEDSWORK: handle one level of alternates */ - result =run_command (&rsync); - -strbuf_release (&buf); - -return result; +return run_command (&rsync); } static int write_one_ref(const char *name, const unsigned char *sha1,
Signature · 1 line
2.0.0