describe: use argv-array
Instead of using a hand allocated args[] array, use argv-array API to manage the dynamically created list of arguments when invoking name-rev. Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
b23e0b9353
commit
45bc950b43
|
@ -7,6 +7,7 @@
|
||||||
#include "parse-options.h"
|
#include "parse-options.h"
|
||||||
#include "diff.h"
|
#include "diff.h"
|
||||||
#include "hash.h"
|
#include "hash.h"
|
||||||
|
#include "argv-array.h"
|
||||||
|
|
||||||
#define SEEN (1u<<0)
|
#define SEEN (1u<<0)
|
||||||
#define MAX_TAGS (FLAG_BITS - 1)
|
#define MAX_TAGS (FLAG_BITS - 1)
|
||||||
|
@ -442,24 +443,23 @@ int cmd_describe(int argc, const char **argv, const char *prefix)
|
||||||
die(_("--long is incompatible with --abbrev=0"));
|
die(_("--long is incompatible with --abbrev=0"));
|
||||||
|
|
||||||
if (contains) {
|
if (contains) {
|
||||||
const char **args = xmalloc((7 + argc) * sizeof(char *));
|
struct argv_array args;
|
||||||
int i = 0;
|
|
||||||
args[i++] = "name-rev";
|
argv_array_init(&args);
|
||||||
args[i++] = "--name-only";
|
argv_array_pushl(&args, "name-rev", "--name-only", "--no-undefined",
|
||||||
args[i++] = "--no-undefined";
|
NULL);
|
||||||
if (always)
|
if (always)
|
||||||
args[i++] = "--always";
|
argv_array_push(&args, "--always");
|
||||||
if (!all) {
|
if (!all) {
|
||||||
args[i++] = "--tags";
|
argv_array_push(&args, "--tags");
|
||||||
if (pattern) {
|
if (pattern)
|
||||||
char *s = xmalloc(strlen("--refs=refs/tags/") + strlen(pattern) + 1);
|
argv_array_pushf(&args, "--refs=refs/tags/%s", pattern);
|
||||||
sprintf(s, "--refs=refs/tags/%s", pattern);
|
|
||||||
args[i++] = s;
|
|
||||||
}
|
}
|
||||||
|
while (*argv) {
|
||||||
|
argv_array_push(&args, *argv);
|
||||||
|
argv++;
|
||||||
}
|
}
|
||||||
memcpy(args + i, argv, argc * sizeof(char *));
|
return cmd_name_rev(args.argc, args.argv, prefix);
|
||||||
args[i + argc] = NULL;
|
|
||||||
return cmd_name_rev(i + argc, args, prefix);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
init_hash(&names);
|
init_hash(&names);
|
||||||
|
|
Loading…
Reference in New Issue