builtin/show-ref: stop using global variable to count matches

When passing patterns to git-show-ref(1) we're checking whether any
reference matches -- if none do, we indicate this condition via an
unsuccessful exit code.

We're using a global variable to count these matches, which is required
because the counter is getting incremented in a callback function. But
now that we have the `struct show_ref_data` in place, we can get rid of
the global variable and put the counter in there instead.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Patrick Steinhardt 2023-10-31 09:16:33 +01:00 committed by Junio C Hamano
parent 7907fb0c97
commit 84650989b7

View file

@ -18,7 +18,7 @@ static const char * const show_ref_usage[] = {
NULL
};
static int deref_tags, show_head, tags_only, heads_only, found_match, verify,
static int deref_tags, show_head, tags_only, heads_only, verify,
quiet, hash_only, abbrev;
static void show_one(const char *refname, const struct object_id *oid)
@ -50,6 +50,7 @@ static void show_one(const char *refname, const struct object_id *oid)
struct show_ref_data {
const char **patterns;
int found_match;
};
static int show_ref(const char *refname, const struct object_id *oid,
@ -78,7 +79,7 @@ static int show_ref(const char *refname, const struct object_id *oid,
}
match:
found_match++;
data->found_match++;
show_one(refname, oid);
@ -191,7 +192,7 @@ static int cmd_show_ref__patterns(const char **patterns)
} else {
for_each_ref(show_ref, &show_ref_data);
}
if (!found_match)
if (!show_ref_data.found_match)
return 1;
return 0;