tree_entry_interesting(): support depth limit
This is needed to replace pathspec_matches() in builtin/grep.c. max_depth == -1 means infinite depth. Depth limit is only effective when pathspec.recursive == 1. When pathspec.recursive == 0, the behavior depends on match functions: non-recursive for tree_entry_interesting() and recursive for match_pathspec{,_depth} Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
58c4d66619
commit
bc96cc87db
15
dir.c
15
dir.c
@ -87,6 +87,21 @@ int fill_directory(struct dir_struct *dir, const char **pathspec)
|
||||
return len;
|
||||
}
|
||||
|
||||
int within_depth(const char *name, int namelen,
|
||||
int depth, int max_depth)
|
||||
{
|
||||
const char *cp = name, *cpe = name + namelen;
|
||||
|
||||
while (cp < cpe) {
|
||||
if (*cp++ != '/')
|
||||
continue;
|
||||
depth++;
|
||||
if (depth > max_depth)
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Does 'match' match the given name?
|
||||
* A match is found if
|
||||
|
Reference in New Issue
Block a user