|
7 | 7 | #include "run-command.h"
|
8 | 8 | #include "pkt-line.h"
|
9 | 9 | #include "sideband.h"
|
| 10 | +#include "argv-array.h" |
10 | 11 |
|
11 | 12 | static struct remote *remote;
|
12 | 13 | static const char *url; /* always ends with a trailing slash */
|
@@ -787,36 +788,35 @@ static int push_dav(int nr_spec, char **specs)
|
787 | 788 | static int push_git(struct discovery *heads, int nr_spec, char **specs)
|
788 | 789 | {
|
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); |
792 | 797 |
|
793 |
| - argv = xmalloc((10 + nr_spec) * sizeof(char*)); |
794 |
| - argv[argc++] = "send-pack"; |
795 |
| - argv[argc++] = "--stateless-rpc"; |
796 |
| - argv[argc++] = "--helper-status"; |
797 | 798 | if (options.thin)
|
798 |
| - argv[argc++] = "--thin"; |
| 799 | + argv_array_push(&args, "--thin"); |
799 | 800 | if (options.dry_run)
|
800 |
| - argv[argc++] = "--dry-run"; |
| 801 | + argv_array_push(&args, "--dry-run"); |
801 | 802 | if (options.verbosity == 0)
|
802 |
| - argv[argc++] = "--quiet"; |
| 803 | + argv_array_push(&args, "--quiet"); |
803 | 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); |
807 | 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 | 810 |
|
811 | 811 | memset(&rpc, 0, sizeof(rpc));
|
812 | 812 | rpc.service_name = "git-receive-pack",
|
813 |
| - rpc.argv = argv; |
| 813 | + rpc.argv = args.argv; |
814 | 814 |
|
815 | 815 | err = rpc_service(&rpc, heads);
|
816 | 816 | if (rpc.result.len)
|
817 | 817 | write_or_die(1, rpc.result.buf, rpc.result.len);
|
818 | 818 | strbuf_release(&rpc.result);
|
819 |
| - free(argv); |
| 819 | + argv_array_clear(&args); |
820 | 820 | return err;
|
821 | 821 | }
|
822 | 822 |
|
|
0 commit comments