dir: introduce readdir_skip_dot_and_dotdot() helper
authorElijah Newren <newren@gmail.com>
Thu, 27 May 2021 04:53:56 +0000 (04:53 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 27 May 2021 05:02:37 +0000 (14:02 +0900)
commit906fc557b70b2b2995785c9b37e212d2f86b469e
treeaae98ad6bb236082101b55fa3617b94da11204a1
parenteef814828f175290ca1fcd17ad74faff95346c85
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