This commit is contained in:
Parker 2024-07-22 23:27:03 -07:00 committed by GitHub
parent ca9364a0df
commit 701134e596
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 8 deletions

View File

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2022 Ash Wolf
Copyright (c) 2022-2024 Ash Wolf & Decompals
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -681,14 +681,19 @@ namespace kernel32 {
std::string pattern;
};
bool findNextFile(FindFirstFileHandle *handle) {
if ((handle->it != std::filesystem::directory_iterator()) && (handle->pattern == "")) {
// The caller (ie `FindFirstFileA`) was passed a path with a
// trailing period (like `include/.`). This behavior doesn't seem
// to be documented, so we treat it as an "find any file on this
// directory".
return true;
bool findNextFile(FindFirstFileHandle* handle) {
// Check if iterator is valid before using it
if (!handle || handle->it == std::filesystem::directory_iterator()) {
return false;
}
// If pattern is empty, just iterate
if (handle->pattern.empty()) {
handle->it++;
return handle->it != std::filesystem::directory_iterator();
}
// Look for a matching file with the pattern
while (handle->it != std::filesystem::directory_iterator()) {
std::filesystem::path path = *handle->it;
if (fnmatch(handle->pattern.c_str(), path.filename().c_str(), 0) == 0) {
@ -696,6 +701,7 @@ namespace kernel32 {
}
handle->it++;
}
return false;
}