summaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorLibravatar Nguyễn Thái Ngọc Duy <pclouds@gmail.com>2011-03-25 16:34:20 +0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2011-03-25 09:20:33 -0700
commit97d0b74a49f0c81c3f9673c1a17721ac0624c3df (patch)
treec4e7b7b6f2083cb9abf6a1cd7d97c0e693203744 /builtin
parentConvert read_tree{,_recursive} to support struct pathspec (diff)
downloadtgif-97d0b74a49f0c81c3f9673c1a17721ac0624c3df.tar.xz
Improve tree_entry_interesting() handling code
t_e_i() can return -1 or 2 to early shortcut a search. Current code may use up to two variables to handle it. One for saving return value from t_e_i temporarily, one for saving return code 2. The second variable is not needed. If we make sure the first variable does not change until the next t_e_i() call, then we can do something like this: int ret = 0; while (...) { if (ret != 2) { ret = t_e_i(); if (ret < 0) /* no longer interesting */ break; if (ret == 0) /* skip this round */ continue; } /* ret > 0, interesting */ } Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r--builtin/grep.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/builtin/grep.c b/builtin/grep.c
index c3af8760cc..73b962f832 100644
--- a/builtin/grep.c
+++ b/builtin/grep.c
@@ -521,18 +521,18 @@ static int grep_cache(struct grep_opt *opt, const struct pathspec *pathspec, int
static int grep_tree(struct grep_opt *opt, const struct pathspec *pathspec,
struct tree_desc *tree, struct strbuf *base, int tn_len)
{
- int hit = 0, matched = 0;
+ int hit = 0, match = 0;
struct name_entry entry;
int old_baselen = base->len;
while (tree_entry(tree, &entry)) {
int te_len = tree_entry_len(entry.path, entry.sha1);
- if (matched != 2) {
- matched = tree_entry_interesting(&entry, base, tn_len, pathspec);
- if (matched == -1)
- break; /* no more matches */
- if (!matched)
+ if (match != 2) {
+ match = tree_entry_interesting(&entry, base, tn_len, pathspec);
+ if (match < 0)
+ break;
+ if (match == 0)
continue;
}