diff options
| author | Ansariel <ansariel.hiller@phoenixviewer.com> | 2021-06-11 22:50:39 +0200 | 
|---|---|---|
| committer | Ansariel <ansariel.hiller@phoenixviewer.com> | 2021-06-11 22:50:39 +0200 | 
| commit | 564a7acb321c54ad5f9fc6f5242efbe4c7638dbc (patch) | |
| tree | cd4d0991a119fc42145679bde2165b1f99b4c26f /indra | |
| parent | d0f2a2c2008006b57f181e8dfa5e20940687a941 (diff) | |
Change all remaining boost::filesystem methods to their non-throwing overloads
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llfilesystem/lldiskcache.cpp | 35 | 
1 files changed, 24 insertions, 11 deletions
| diff --git a/indra/llfilesystem/lldiskcache.cpp b/indra/llfilesystem/lldiskcache.cpp index f4d20d0e61..dd8916dccb 100644 --- a/indra/llfilesystem/lldiskcache.cpp +++ b/indra/llfilesystem/lldiskcache.cpp @@ -87,6 +87,7 @@ void LLDiskCache::purge()          LL_INFOS() << "Total dir size before purge is " << dirFileSize(mCacheDir) << LL_ENDL;      } +    boost::system::error_code ec;      auto start_time = std::chrono::high_resolution_clock::now();      typedef std::pair<std::time_t, std::pair<uintmax_t, std::string>> file_info_t; @@ -97,17 +98,25 @@ void LLDiskCache::purge()  #else      std::string cache_path(mCacheDir);  #endif -    if (boost::filesystem::is_directory(cache_path)) +    if (boost::filesystem::is_directory(cache_path, ec) && !ec.failed())      {          for (auto& entry : boost::make_iterator_range(boost::filesystem::directory_iterator(cache_path), {}))          { -            if (boost::filesystem::is_regular_file(entry)) +            if (boost::filesystem::is_regular_file(entry, ec) && !ec.failed())              {                  if (entry.path().string().find(mCacheFilenamePrefix) != std::string::npos)                  { -                    uintmax_t file_size = boost::filesystem::file_size(entry); +                    uintmax_t file_size = boost::filesystem::file_size(entry, ec); +                    if (ec.failed()) +                    { +                        continue; +                    }                      const std::string file_path = entry.path().string(); -                    const std::time_t file_time = boost::filesystem::last_write_time(entry); +                    const std::time_t file_time = boost::filesystem::last_write_time(entry, ec); +                    if (ec.failed()) +                    { +                        continue; +                    }                      file_info.push_back(file_info_t(file_time, { file_size, file_path }));                  } @@ -131,7 +140,6 @@ void LLDiskCache::purge()          if (file_size_total > mMaxSizeBytes)          {              action = "DELETE:"; -            boost::system::error_code ec;              boost::filesystem::remove(entry.second.second, ec);              if (ec.failed())              { @@ -321,20 +329,20 @@ void LLDiskCache::clearCache()       * the component files but it's called infrequently so it's       * likely just fine       */ +    boost::system::error_code ec;  #if LL_WINDOWS      std::wstring cache_path(utf8str_to_utf16str(mCacheDir));  #else      std::string cache_path(mCacheDir);  #endif -    if (boost::filesystem::is_directory(cache_path)) +    if (boost::filesystem::is_directory(cache_path, ec) && !ec.failed())      {          for (auto& entry : boost::make_iterator_range(boost::filesystem::directory_iterator(cache_path), {}))          { -            if (boost::filesystem::is_regular_file(entry)) +            if (boost::filesystem::is_regular_file(entry, ec) && !ec.failed())              {                  if (entry.path().string().find(mCacheFilenamePrefix) != std::string::npos)                  { -                    boost::system::error_code ec;                      boost::filesystem::remove(entry, ec);                      if (ec.failed())                      { @@ -359,20 +367,25 @@ uintmax_t LLDiskCache::dirFileSize(const std::string dir)       * so if performance is ever an issue, optimizing this or removing it altogether,       * is an easy win.       */ +    boost::system::error_code ec;  #if LL_WINDOWS      std::wstring dir_path(utf8str_to_utf16str(dir));  #else      std::string dir_path(dir);  #endif -    if (boost::filesystem::is_directory(dir_path)) +    if (boost::filesystem::is_directory(dir_path, ec) && !ec.failed())      {          for (auto& entry : boost::make_iterator_range(boost::filesystem::directory_iterator(dir_path), {}))          { -            if (boost::filesystem::is_regular_file(entry)) +            if (boost::filesystem::is_regular_file(entry, ec) && !ec.failed())              {                  if (entry.path().string().find(mCacheFilenamePrefix) != std::string::npos)                  { -                    total_file_size += boost::filesystem::file_size(entry); +                    uintmax_t file_size = boost::filesystem::file_size(entry, ec); +                    if (!ec.failed()) +                    { +                        total_file_size += file_size; +                    }                  }              }          } | 
