diff options
Diffstat (limited to 'indra/llfilesystem/lldiriterator.cpp')
| -rw-r--r-- | indra/llfilesystem/lldiriterator.cpp | 44 |
1 files changed, 20 insertions, 24 deletions
diff --git a/indra/llfilesystem/lldiriterator.cpp b/indra/llfilesystem/lldiriterator.cpp index a6eb4adf7f..ec6d1726f0 100644 --- a/indra/llfilesystem/lldiriterator.cpp +++ b/indra/llfilesystem/lldiriterator.cpp @@ -24,13 +24,14 @@ * $/LicenseInfo$ */ +#include "linden_common.h" + #include "lldiriterator.h" -#include "fix_macros.h" #include "llregex.h" -#include <boost/filesystem.hpp> +#include <filesystem> -namespace fs = boost::filesystem; +namespace fs = std::filesystem; static std::string glob_to_regex(const std::string& glob); @@ -51,11 +52,7 @@ private: LLDirIterator::Impl::Impl(const std::string &dirname, const std::string &mask) : mIsValid(false) { -#ifdef LL_WINDOWS // or BOOST_WINDOWS_API - fs::path dir_path(ll_convert<std::wstring>(dirname)); -#else - fs::path dir_path(dirname); -#endif + fs::path dir_path = fsyspath(dirname); bool is_dir = false; @@ -72,11 +69,7 @@ LLDirIterator::Impl::Impl(const std::string &dirname, const std::string &mask) if (!is_dir) { -#if LL_WINDOWS - LL_WARNS() << "Invalid path: \"" << utf16str_to_utf8str(dir_path.wstring()) << "\"" << LL_ENDL; -#else - LL_WARNS() << "Invalid path: \"" << dir_path.string() << "\"" << LL_ENDL; -#endif + LL_WARNS() << "Invalid path: \"" << dirname << "\"" << LL_ENDL; return; } @@ -133,24 +126,27 @@ bool LLDirIterator::Impl::next(std::string &fname) { while (mIter != end_itr && !found) { - boost::smatch match; -#if LL_WINDOWS - std::string name = utf16str_to_utf8str(mIter->path().filename().wstring()); -#else - std::string name = mIter->path().filename().string(); -#endif - found = ll_regex_match(name, match, mFilterExp); - if (found) + try { - fname = name; + boost::smatch match; + std::string name = fsyspath(mIter->path().filename()).string(); + found = ll_regex_match(name, match, mFilterExp); + if (found) + { + fname = name; + } + } + catch (const std::system_error& e) + { + LL_WARNS() << "Exception accessing directory entry: " << e.what() << LL_ENDL; } ++mIter; } } - catch (const fs::filesystem_error& e) + catch (const std::system_error& e) { - LL_WARNS() << e.what() << LL_ENDL; + LL_WARNS() << "Exception iterating directory: " << e.what() << LL_ENDL; } return found; |
