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