send-pack: use internal argv_array of struct child_process
Avoid a magic number of NULL placeholder values and a magic index by constructing the command line for pack-objects using the embedded argv_array of the child_process. The resulting code is shorter and easier to extend. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
René Scharfe committed
Dec 22, 2017 at 09:14 UTC
a923e05944271e2aa887721a1d2f24bb418eeca7
1 file changed
+9
-19
send-pack.c
+9
-19
@@ -58,35 +58,25 @@ static int pack_objects(int fd, struct ref *refs, struct oid_array *extra, struc
58
* the revision parameters to it via its stdin and
59
* let its stdout go back to the other end.
60
*/
61
- const char *argv[] = {
62
- "pack-objects",
63
- "--all-progress-implied",
64
- "--revs",
65
- "--stdout",
66
- NULL,
67
- NULL,
68
- NULL,
69
- NULL,
70
- NULL,
71
- NULL,
72
- };
61
struct child_process po = CHILD_PROCESS_INIT;
62
FILE *po_in;
63
int i;
64
int rc;
65
78
- i = 4;
66
+ argv_array_push(&po.args, "pack-objects");
67
+ argv_array_push(&po.args, "--all-progress-implied");
68
+ argv_array_push(&po.args, "--revs");
69
+ argv_array_push(&po.args, "--stdout");
70
if (args->use_thin_pack)
80
- argv[i++] = "--thin";
71
+ argv_array_push(&po.args, "--thin");
72
if (args->use_ofs_delta)
82
- argv[i++] = "--delta-base-offset";
73
+ argv_array_push(&po.args, "--delta-base-offset");
74
if (args->quiet || !args->progress)
84
- argv[i++] = "-q";
75
+ argv_array_push(&po.args, "-q");
76
if (args->progress)
86
- argv[i++] = "--progress";
77
+ argv_array_push(&po.args, "--progress");
78
if (is_repository_shallow())
88
- argv[i++] = "--shallow";
89
- po.argv = argv;
79
+ argv_array_push(&po.args, "--shallow");
80
po.in = -1;
81
po.out = args->stateless_rpc ? -1 : fd;
82
po.git_cmd = 1;