dir: introduce readdir_skip_dot_and_dotdot() helper
Many places in the code were doing while ((d = readdir(dir)) != NULL) { if (is_dot_or_dotdot(d->d_name)) continue; ...process d... } Introduce a readdir_skip_dot_and_dotdot() helper to make that a one-liner: while ((d = readdir_skip_dot_and_dotdot(dir)) != NULL) { ...process d... } This helper particularly simplifies checks for empty directories. Also use this helper in read_cached_dir() so that our statistics are consistent across platforms. (In other words, read_cached_dir() should have been using is_dot_or_dotdot() and skipping such entries, but did not and left it to treat_path() to detect and mark such entries as path_none.) Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
4e689d8171
commit
b548f0f156
12
worktree.c
12
worktree.c
@ -128,10 +128,8 @@ struct worktree **get_worktrees(void)
|
||||
dir = opendir(path.buf);
|
||||
strbuf_release(&path);
|
||||
if (dir) {
|
||||
while ((d = readdir(dir)) != NULL) {
|
||||
while ((d = readdir_skip_dot_and_dotdot(dir)) != NULL) {
|
||||
struct worktree *linked = NULL;
|
||||
if (is_dot_or_dotdot(d->d_name))
|
||||
continue;
|
||||
|
||||
if ((linked = get_linked_worktree(d->d_name))) {
|
||||
ALLOC_GROW(list, counter + 1, alloc);
|
||||
@ -486,13 +484,9 @@ int submodule_uses_worktrees(const char *path)
|
||||
if (!dir)
|
||||
return 0;
|
||||
|
||||
while ((d = readdir(dir)) != NULL) {
|
||||
if (is_dot_or_dotdot(d->d_name))
|
||||
continue;
|
||||
|
||||
d = readdir_skip_dot_and_dotdot(dir);
|
||||
if (d != NULL)
|
||||
ret = 1;
|
||||
break;
|
||||
}
|
||||
closedir(dir);
|
||||
return ret;
|
||||
}
|
||||
|
Reference in New Issue
Block a user