Codechange: Use std::filesystem::directory_iterator instead of opendir. #12524
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation / Problem
We use
opendir
/readdir
/closedir
to scan for files inside directories.This a C API so requires
char *
strings, and does not exist on Windows, so we have our own custom implementation using the Windows APIs.C++'s take on this is
std::filesystem::directory_iterator
(which I've previously use for language file scanning), which is cross-platform and basically much nicer to use.Description
This changeset make use of
std::filesystem::directory_iterator
, tweaks a couple of still-specific functions (Windows does hidden files differently) and then removes all of the custom opendir/readdir/closedir implemention for Windows.The first commit is actually #12493, which is simplified with a different call but is included here because the current implementation uses ttd_opendir.
Limitations
Not actually tested on Windows because I don't use it.
Checklist for review
Some things are not automated, and forgotten often. This list is a reminder for the reviewers.