diff options
author | René Scharfe <l.s.r@web.de> | 2014-07-18 17:12:34 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-07-18 11:15:23 -0700 |
commit | e929f515faaa44deed9057cdbaf8e44b3d855333 (patch) | |
tree | 06ae31eeb41a6d3db4331296b050a677238b45bb /transport.c | |
parent | d1d094564ac818a79465f249ca765ab7ef97d443 (diff) | |
download | git-e929f515faaa44deed9057cdbaf8e44b3d855333.tar.gz git-e929f515faaa44deed9057cdbaf8e44b3d855333.tar.xz |
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 <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'transport.c')
-rw-r--r-- | transport.c | 28 |
1 files changed, 8 insertions, 20 deletions
diff --git a/transport.c b/transport.c index 59c9727d8..3e425709f 100644 --- a/transport.c +++ b/transport.c @@ -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, |