From c0fd1f517efeb67df32b8d4ffa209afab14be436 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Thu, 14 Jul 2005 16:55:06 -0700 Subject: Make "ce_match_path()" a generic helper function ... and make git-diff-files use it too. This all _should_ make the diffcore-pathspec.c phase unnecessary, since the diff'ers now all do the path matching early interally. --- read-cache.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'read-cache.c') diff --git a/read-cache.c b/read-cache.c index 5a61bf752..f448ab17e 100644 --- a/read-cache.c +++ b/read-cache.c @@ -171,6 +171,30 @@ int ce_same_name(struct cache_entry *a, struct cache_entry *b) return ce_namelen(b) == len && !memcmp(a->name, b->name, len); } +int ce_path_match(const struct cache_entry *ce, const char **pathspec) +{ + const char *match, *name; + int len; + + if (!pathspec) + return 1; + + len = ce_namelen(ce); + name = ce->name; + while ((match = *pathspec++) != NULL) { + int matchlen = strlen(match); + if (matchlen > len) + continue; + if (memcmp(name, match, matchlen)) + continue; + if (matchlen && name[matchlen-1] == '/') + return 1; + if (name[matchlen] == '/' || !name[matchlen]) + return 1; + } + return 0; +} + /* * Do we have another file that has the beginning components being a * proper superset of the name we're trying to add? -- cgit v1.2.1