aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2010-02-13 11:38:42 -0800
committerJunio C Hamano <gitster@pobox.com>2010-02-13 11:38:42 -0800
commit20322e0b552b9860377c162675ce5c49bfd32e83 (patch)
tree1f47fd25574dc1db0670ab4b430f1dcc8ccfa042
parent40dae3094db123be664c69b356b6e4f4e33d80e6 (diff)
downloadgit-20322e0b552b9860377c162675ce5c49bfd32e83.tar.gz
git-20322e0b552b9860377c162675ce5c49bfd32e83.tar.xz
builtin-for-each-ref.c: check if we need to peel onion while parsing the format
Instead of iterating over the parsed atoms that are used in the output format after all the parsing is done, check it while parsing the format string.
-rw-r--r--builtin-for-each-ref.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/builtin-for-each-ref.c b/builtin-for-each-ref.c
index 3698e822c..d68977ee6 100644
--- a/builtin-for-each-ref.c
+++ b/builtin-for-each-ref.c
@@ -133,6 +133,8 @@ static int parse_atom(const char *atom, const char *ep)
(sizeof(*used_atom_type) * used_atom_cnt));
used_atom[at] = xmemdupz(atom, ep - atom);
used_atom_type[at] = valid_atom[i].cmp_type;
+ if (*atom == '*')
+ need_tagged = 1;
return at;
}
@@ -944,13 +946,6 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix)
refs = cbdata.grab_array;
num_refs = cbdata.grab_cnt;
- for (i = 0; i < used_atom_cnt; i++) {
- if (used_atom[i][0] == '*') {
- need_tagged = 1;
- break;
- }
- }
-
sort_refs(sort, refs, num_refs);
if (!maxcount || num_refs < maxcount)