Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> writes: > We marks pathspec with wildcards with the field use_wildcard. We could s/marks/mark; > do better by saving the length of the non-wildcard part, which can be > for optimizations such as f9f6e2c (exclude: do strcmp as much as s/for /used &/; > possible before fnmatch - 2012-06-07) > > Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> The code looks straightforward and correct. Thanks. > --- > builtin/ls-files.c | 2 +- > builtin/ls-tree.c | 2 +- > cache.h | 2 +- > dir.c | 6 +++--- > tree-walk.c | 4 ++-- > 5 files changed, 8 insertions(+), 8 deletions(-) > > diff --git a/builtin/ls-files.c b/builtin/ls-files.c > index b5434af..4a9ee69 100644 > --- a/builtin/ls-files.c > +++ b/builtin/ls-files.c > @@ -337,7 +337,7 @@ void overlay_tree_on_cache(const char *tree_name, const char *prefix) > matchbuf[0] = prefix; > matchbuf[1] = NULL; > init_pathspec(&pathspec, matchbuf); > - pathspec.items[0].use_wildcard = 0; > + pathspec.items[0].nowildcard_len = pathspec.items[0].len; > } else > init_pathspec(&pathspec, NULL); > if (read_tree(tree, 1, &pathspec)) > diff --git a/builtin/ls-tree.c b/builtin/ls-tree.c > index 235c17c..fb76e38 100644 > --- a/builtin/ls-tree.c > +++ b/builtin/ls-tree.c > @@ -168,7 +168,7 @@ int cmd_ls_tree(int argc, const char **argv, const char *prefix) > > init_pathspec(&pathspec, get_pathspec(prefix, argv + 1)); > for (i = 0; i < pathspec.nr; i++) > - pathspec.items[i].use_wildcard = 0; > + pathspec.items[i].nowildcard_len = pathspec.items[i].len; > pathspec.has_wildcard = 0; > tree = parse_tree_indirect(sha1); > if (!tree) > diff --git a/cache.h b/cache.h > index dbd8018..bf031f1 100644 > --- a/cache.h > +++ b/cache.h > @@ -482,7 +482,7 @@ struct pathspec { > struct pathspec_item { > const char *match; > int len; > - unsigned int use_wildcard:1; > + int nowildcard_len; > } *items; > }; > > diff --git a/dir.c b/dir.c > index 5a83aa7..c391d46 100644 > --- a/dir.c > +++ b/dir.c > @@ -230,7 +230,7 @@ static int match_pathspec_item(const struct pathspec_item *item, int prefix, > return MATCHED_RECURSIVELY; > } > > - if (item->use_wildcard && !fnmatch(match, name, 0)) > + if (item->nowildcard_len < item->len && !fnmatch(match, name, 0)) > return MATCHED_FNMATCH; > > return 0; > @@ -1429,8 +1429,8 @@ int init_pathspec(struct pathspec *pathspec, const char **paths) > > item->match = path; > item->len = strlen(path); > - item->use_wildcard = !no_wildcard(path); > - if (item->use_wildcard) > + item->nowildcard_len = simple_length(path); > + if (item->nowildcard_len < item->len) > pathspec->has_wildcard = 1; > } > > diff --git a/tree-walk.c b/tree-walk.c > index 3f54c02..af871c5 100644 > --- a/tree-walk.c > +++ b/tree-walk.c > @@ -626,7 +626,7 @@ enum interesting tree_entry_interesting(const struct name_entry *entry, > &never_interesting)) > return entry_interesting; > > - if (item->use_wildcard) { > + if (item->nowildcard_len < item->len) { > if (!fnmatch(match + baselen, entry->path, 0)) > return entry_interesting; > > @@ -642,7 +642,7 @@ enum interesting tree_entry_interesting(const struct name_entry *entry, > } > > match_wildcards: > - if (!item->use_wildcard) > + if (item->nowildcard_len == item->len) > continue; > > /* -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html