builtin/remote.c:update(): use struct argv_array
Use struct argv_array for calling the "git fetch" subprocesses. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Michael Haggerty committed
Oct 30, 2013 at 06:33 UTC
8607590e74814c6c6a352cbd099e2617a69bb2c6
1 file changed
+17
-16
builtin/remote.c
+17
-16
@@ -6,6 +6,7 @@
6
#include "strbuf.h"
7
#include "run-command.h"
8
#include "refs.h"
9
+#include "argv-array.h"
10
11
static const char * const builtin_remote_usage[] = {
12
N_("git remote [-v | --verbose]"),
@@ -1376,36 +1377,36 @@ static int update(int argc, const char **argv)
1377
N_("prune remotes after fetching")),
1378
OPT_END()
1379
};
1379
- const char **fetch_argv;
1380
- int fetch_argc = 0;
1380
+ struct argv_array fetch_argv = ARGV_ARRAY_INIT;
1381
int default_defined = 0;
1382
-
1383
- fetch_argv = xmalloc(sizeof(char *) * (argc+5));
1382
+ int retval;
1383
1384
argc = parse_options(argc, argv, NULL, options, builtin_remote_update_usage,
1385
PARSE_OPT_KEEP_ARGV0);
1386
1388
- fetch_argv[fetch_argc++] = "fetch";
1387
+ argv_array_push(&fetch_argv, "fetch");
1388
1389
if (prune)
1391
- fetch_argv[fetch_argc++] = "--prune";
1390
+ argv_array_push(&fetch_argv, "--prune");
1391
if (verbose)
1393
- fetch_argv[fetch_argc++] = "-v";
1394
- fetch_argv[fetch_argc++] = "--multiple";
1392
+ argv_array_push(&fetch_argv, "-v");
1393
+ argv_array_push(&fetch_argv, "--multiple");
1394
if (argc < 2)
1396
- fetch_argv[fetch_argc++] = "default";
1395
+ argv_array_push(&fetch_argv, "default");
1396
for (i = 1; i < argc; i++)
1398
- fetch_argv[fetch_argc++] = argv[i];
1397
+ argv_array_push(&fetch_argv, argv[i]);
1398
1400
- if (strcmp(fetch_argv[fetch_argc-1], "default") == 0) {
1399
+ if (strcmp(fetch_argv.argv[fetch_argv.argc-1], "default") == 0) {
1400
git_config(get_remote_default, &default_defined);
1402
- if (!default_defined)
1403
- fetch_argv[fetch_argc-1] = "--all";
1401
+ if (!default_defined) {
1402
+ argv_array_pop(&fetch_argv);
1403
+ argv_array_push(&fetch_argv, "--all");
1404
+ }
1405
}
1406
1406
- fetch_argv[fetch_argc] = NULL;
1407
-
1408
- return run_command_v_opt(fetch_argv, RUN_GIT_CMD);
1407
+ retval = run_command_v_opt(fetch_argv.argv, RUN_GIT_CMD);
1408
+ argv_array_clear(&fetch_argv);
1409
+ return retval;
1410
}
1411
1412
static int remove_all_fetch_refspecs(const char *remote, const char *key)