From: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
To: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
Elijah Newren <newren@gmail.com>
Cc: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: [PATCH 5/6] tree_entry_interesting(): remove dependency on struct diff_options
Date: Mon, 20 Sep 2010 09:21:53 +1000 [thread overview]
Message-ID: <1284938514-16663-6-git-send-email-pclouds@gmail.com> (raw)
In-Reply-To: <1284938514-16663-1-git-send-email-pclouds@gmail.com>
This function can be potentially used in more places than just
tree-diff.c. "struct diff_options" does not make much sense outside
diff_tree_sha1().
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
tree-diff.c | 28 +++++++++++-----------------
1 files changed, 11 insertions(+), 17 deletions(-)
diff --git a/tree-diff.c b/tree-diff.c
index 986c0f4..822d45e 100644
--- a/tree-diff.c
+++ b/tree-diff.c
@@ -91,25 +91,20 @@ static int compare_tree_entry(struct tree_desc *t1, struct tree_desc *t2, const
* - zero for no
* - negative for "no, and no subsequent entries will be either"
*/
-static int tree_entry_interesting(struct tree_desc *desc, const char *base, int baselen, struct diff_options *opt)
+static int tree_entry_interesting(const struct name_entry *entry, const char *base, int baselen, const struct pathspec *ps)
{
- const char *path;
- const unsigned char *sha1;
- unsigned mode;
int i;
int pathlen;
int never_interesting = -1;
- if (!opt->pathspec.nr)
+ if (!ps || !ps->nr)
return 1;
- sha1 = tree_entry_extract(desc, &path, &mode);
-
- pathlen = tree_entry_len(path, sha1);
+ pathlen = tree_entry_len(entry->path, entry->sha1);
- for (i = 0; i < opt->pathspec.nr; i++) {
- const char *match = opt->pathspec.raw[i];
- int matchlen = opt->pathspec.items[i].len;
+ for (i = 0; i < ps->nr; i++) {
+ const char *match = ps->raw[i];
+ int matchlen = ps->items[i].len;
int m = -1; /* signals that we haven't called strncmp() */
if (baselen >= matchlen) {
@@ -147,7 +142,7 @@ static int tree_entry_interesting(struct tree_desc *desc, const char *base, int
* Does match sort strictly earlier than path
* with their common parts?
*/
- m = strncmp(match, path,
+ m = strncmp(match, entry->path,
(matchlen < pathlen) ? matchlen : pathlen);
if (m < 0)
continue;
@@ -174,7 +169,7 @@ static int tree_entry_interesting(struct tree_desc *desc, const char *base, int
if (matchlen > pathlen) {
if (match[pathlen] != '/')
continue;
- if (!S_ISDIR(mode))
+ if (!S_ISDIR(entry->mode))
continue;
}
@@ -183,7 +178,7 @@ static int tree_entry_interesting(struct tree_desc *desc, const char *base, int
* we cheated and did not do strncmp(), so we do
* that here.
*/
- m = strncmp(match, path, pathlen);
+ m = strncmp(match, entry->path, pathlen);
/*
* If common part matched earlier then it is a hit,
@@ -206,8 +201,7 @@ static void show_tree(struct diff_options *opt, const char *prefix, struct tree_
if (all_interesting)
show = 1;
else {
- show = tree_entry_interesting(desc, base, baselen,
- opt);
+ show = tree_entry_interesting(&desc->entry, base, baselen, &opt->pathspec);
if (show == 2)
all_interesting = 1;
}
@@ -266,7 +260,7 @@ static void skip_uninteresting(struct tree_desc *t, const char *base, int basele
if (all_interesting)
show = 1;
else {
- show = tree_entry_interesting(t, base, baselen, opt);
+ show = tree_entry_interesting(&t->entry, base, baselen, &opt->pathspec);
if (show == 2)
all_interesting = 1;
}
--
1.7.1.rc1.70.g788ca
next prev parent reply other threads:[~2010-09-19 23:22 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-19 23:21 [PATCH 0/6] Introduce pathspec struct Nguyễn Thái Ngọc Duy
2010-09-19 23:21 ` [PATCH 1/6] Add struct pathspec Nguyễn Thái Ngọc Duy
2010-09-27 22:19 ` Junio C Hamano
2010-09-29 6:11 ` yj2133011
2010-09-19 23:21 ` [PATCH 2/6] diff-no-index: use diff_tree_setup_paths() Nguyễn Thái Ngọc Duy
2010-09-19 23:21 ` [PATCH 3/6] pathspec: cache string length when initialize pathspec Nguyễn Thái Ngọc Duy
2010-09-27 22:19 ` Junio C Hamano
2010-09-28 1:08 ` Nguyen Thai Ngoc Duy
2010-09-19 23:21 ` [PATCH 4/6] Convert struct diff_options to use struct pathspec Nguyễn Thái Ngọc Duy
2010-09-27 22:19 ` Junio C Hamano
2010-09-19 23:21 ` Nguyễn Thái Ngọc Duy [this message]
2010-09-27 22:20 ` [PATCH 5/6] tree_entry_interesting(): remove dependency on struct diff_options Junio C Hamano
2010-09-28 22:00 ` Nguyen Thai Ngoc Duy
2010-09-19 23:21 ` [PATCH 6/6] Move tree_entry_interesting() to tree-walk.c and export it Nguyễn Thái Ngọc Duy
2010-09-20 8:31 ` [PATCH 0/6] Introduce pathspec struct Elijah Newren
2010-09-20 22:15 ` Nguyen Thai Ngoc Duy
2010-09-28 9:37 ` Junio C Hamano
2010-09-28 13:56 ` Bo Yang
2010-09-28 22:31 ` Nguyen Thai Ngoc Duy
2010-09-29 4:26 ` Junio C Hamano
2010-09-28 23:22 ` David Ripton
2010-09-29 4:29 ` Junio C Hamano
-- strict thread matches above, loose matches on Subject: below --
2010-09-28 12:00 [PATCH v2 0/6] Introduct " Nguyễn Thái Ngọc Duy
2010-09-28 12:00 ` [PATCH 5/6] tree_entry_interesting(): remove dependency on struct diff_options Nguyễn Thái Ngọc Duy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1284938514-16663-6-git-send-email-pclouds@gmail.com \
--to=pclouds@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=newren@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).