summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRené Scharfe <l.s.r@web.de>2017-12-22 09:14:10 +0100
committerJunio C Hamano <gitster@pobox.com>2017-12-22 13:33:53 -0800
commita923e05944271e2aa887721a1d2f24bb418eeca7 (patch)
tree5a0b8779212932ce2172e1ebde11003bc4c9cc88
parentc7191fa51011f9ae03686269a16ce0c03e97afec (diff)
downloadgit-rs/use-argv-array-in-child-process.tar.gz
send-pack: use internal argv_array of struct child_processrs/use-argv-array-in-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>
-rw-r--r--send-pack.c28
1 files changed, 9 insertions, 19 deletions
diff --git a/send-pack.c b/send-pack.c
index a8cc6b266e..2112d3b27a 100644
--- a/send-pack.c
+++ b/send-pack.c
@@ -58,35 +58,25 @@ static int pack_objects(int fd, struct ref *refs, struct oid_array *extra, struc
* the revision parameters to it via its stdin and
* let its stdout go back to the other end.
*/
- const char *argv[] = {
- "pack-objects",
- "--all-progress-implied",
- "--revs",
- "--stdout",
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- };
struct child_process po = CHILD_PROCESS_INIT;
FILE *po_in;
int i;
int rc;
- i = 4;
+ argv_array_push(&po.args, "pack-objects");
+ argv_array_push(&po.args, "--all-progress-implied");
+ argv_array_push(&po.args, "--revs");
+ argv_array_push(&po.args, "--stdout");
if (args->use_thin_pack)
- argv[i++] = "--thin";
+ argv_array_push(&po.args, "--thin");
if (args->use_ofs_delta)
- argv[i++] = "--delta-base-offset";
+ argv_array_push(&po.args, "--delta-base-offset");
if (args->quiet || !args->progress)
- argv[i++] = "-q";
+ argv_array_push(&po.args, "-q");
if (args->progress)
- argv[i++] = "--progress";
+ argv_array_push(&po.args, "--progress");
if (is_repository_shallow())
- argv[i++] = "--shallow";
- po.argv = argv;
+ argv_array_push(&po.args, "--shallow");
po.in = -1;
po.out = args->stateless_rpc ? -1 : fd;
po.git_cmd = 1;