remote-http: use argv-array

Instead of using a hand-managed argument array, use argv-array API to manage dynamically formulated command line. Signed-off-by: Junio C Hamano <gitster@pobox.com>

Junio C Hamano committed Jul 8, 2013 at 22:16 UTC 222b1212c105b46e1672934ecb166fa21d47db3a
1 file changed +16 -16
remote-curl.c
+16 -16
@@ -7,6 +7,7 @@
7 #include "run-command.h"
8 #include "pkt-line.h"
9 #include "sideband.h"
10 +#include "argv-array.h"
11
12 static struct remote *remote;
13 static const char *url; /* always ends with a trailing slash */
@@ -787,36 +788,35 @@ static int push_dav(int nr_spec, char **specs)
788 static int push_git(struct discovery *heads, int nr_spec, char **specs)
789 {
790 struct rpc_state rpc;
790 - const char **argv;
791 - int argc = 0, i, err;
791 + int i, err;
792 + struct argv_array args;
793 +
794 + argv_array_init(&args);
795 + argv_array_pushl(&args, "send-pack", "--stateless-rpc", "--helper-status",
796 + NULL);
797
793 - argv = xmalloc((10 + nr_spec) * sizeof(char*));
794 - argv[argc++] = "send-pack";
795 - argv[argc++] = "--stateless-rpc";
796 - argv[argc++] = "--helper-status";
798 if (options.thin)
798 - argv[argc++] = "--thin";
799 + argv_array_push(&args, "--thin");
800 if (options.dry_run)
800 - argv[argc++] = "--dry-run";
801 + argv_array_push(&args, "--dry-run");
802 if (options.verbosity == 0)
802 - argv[argc++] = "--quiet";
803 + argv_array_push(&args, "--quiet");
804 else if (options.verbosity > 1)
804 - argv[argc++] = "--verbose";
805 - argv[argc++] = options.progress ? "--progress" : "--no-progress";
806 - argv[argc++] = url;
805 + argv_array_push(&args, "--verbose");
806 + argv_array_push(&args, options.progress ? "--progress" : "--no-progress");
807 + argv_array_push(&args, url);
808 for (i = 0; i < nr_spec; i++)
808 - argv[argc++] = specs[i];
809 - argv[argc++] = NULL;
809 + argv_array_push(&args, specs[i]);
810
811 memset(&rpc, 0, sizeof(rpc));
812 rpc.service_name = "git-receive-pack",
813 - rpc.argv = argv;
813 + rpc.argv = args.argv;
814
815 err = rpc_service(&rpc, heads);
816 if (rpc.result.len)
817 write_or_die(1, rpc.result.buf, rpc.result.len);
818 strbuf_release(&rpc.result);
819 - free(argv);
819 + argv_array_clear(&args);
820 return err;
821 }
822