dir: introduce readdir_skip_dot_and_dotdot() helper
authorElijah Newren <newren@gmail.com>
Wed, 12 May 2021 17:28:22 +0000 (17:28 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 12 May 2021 23:45:03 +0000 (08:45 +0900)
commitb548f0f1568f6b01e55ca69c24d3cb19489f92aa
tree0a6c2580b275d3565b5a8de558fa4e49fbed1fb5
parent4e689d81718eb6e939cace317ea3e33cb994dcbb
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>
builtin/clean.c
builtin/worktree.c
diff-no-index.c
dir.c
dir.h
entry.c
notes-merge.c
object-file.c
packfile.c
rerere.c
worktree.c