diff --git a/src/ObjLoading/SearchPath/SearchPathFilesystem.cpp b/src/ObjLoading/SearchPath/SearchPathFilesystem.cpp index b95f5a5b..8d2e992c 100644 --- a/src/ObjLoading/SearchPath/SearchPathFilesystem.cpp +++ b/src/ObjLoading/SearchPath/SearchPathFilesystem.cpp @@ -25,28 +25,36 @@ FileAPI::IFile* SearchPathFilesystem::Open(const std::string& fileName) return nullptr; } -void SearchPathFilesystem::Find(const SearchPathSearchOptions& options, const std::function& callback) +void SearchPathFilesystem::Find(const SearchPathSearchOptions& options, + const std::function& callback) { - if (options.m_should_include_subdirectories) + try { - std::filesystem::recursive_directory_iterator iterator(m_path); - for (const auto entry = begin(iterator); iterator != end(iterator); ++iterator) + if (options.m_should_include_subdirectories) { - auto path = entry->path(); - if (options.m_filter_extensions && path.extension().string() != options.m_extension) - continue; - callback(options.m_absolute_paths ? absolute(path).string() : path.string()); + std::filesystem::recursive_directory_iterator iterator(m_path); + for (const auto entry = begin(iterator); iterator != end(iterator); ++iterator) + { + auto path = entry->path(); + if (options.m_filter_extensions && path.extension().string() != options.m_extension) + continue; + callback(options.m_absolute_paths ? absolute(path).string() : path.string()); + } + } + else + { + std::filesystem::directory_iterator iterator(m_path); + for (const auto entry = begin(iterator); iterator != end(iterator); ++iterator) + { + auto path = entry->path(); + if (options.m_filter_extensions && path.extension().string() != options.m_extension) + continue; + callback(options.m_absolute_paths ? absolute(path).string() : path.string()); + } } } - else + catch (std::filesystem::filesystem_error& e) { - std::filesystem::directory_iterator iterator(m_path); - for (const auto entry = begin(iterator); iterator != end(iterator); ++iterator) - { - auto path = entry->path(); - if (options.m_filter_extensions && path.extension().string() != options.m_extension) - continue; - callback(options.m_absolute_paths ? absolute(path).string() : path.string()); - } + printf("Directory Iterator threw error when trying to find files: \"%s\"\n", e.what()); } }