parent
12704b9411
commit
94cfce4a4d
|
|
@ -43,7 +43,7 @@
|
||||||
#include "lldiriterator.h"
|
#include "lldiriterator.h"
|
||||||
#include "stringize.h"
|
#include "stringize.h"
|
||||||
#include "llstring.h"
|
#include "llstring.h"
|
||||||
#include <filesystem>
|
#include <boost/filesystem.hpp>
|
||||||
#include <boost/range/begin.hpp>
|
#include <boost/range/begin.hpp>
|
||||||
#include <boost/range/end.hpp>
|
#include <boost/range/end.hpp>
|
||||||
#include <boost/assign/list_of.hpp>
|
#include <boost/assign/list_of.hpp>
|
||||||
|
|
@ -103,24 +103,24 @@ std::vector<std::string> LLDir::getFilesInDir(const std::string &dirname)
|
||||||
//Returns a vector of fullpath filenames.
|
//Returns a vector of fullpath filenames.
|
||||||
|
|
||||||
#ifdef LL_WINDOWS // or BOOST_WINDOWS_API
|
#ifdef LL_WINDOWS // or BOOST_WINDOWS_API
|
||||||
std::filesystem::path p(ll_convert<std::wstring>(dirname));
|
boost::filesystem::path p(ll_convert<std::wstring>(dirname));
|
||||||
#else
|
#else
|
||||||
std::filesystem::path p(dirname);
|
boost::filesystem::path p(dirname);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
std::vector<std::string> v;
|
std::vector<std::string> v;
|
||||||
|
|
||||||
std::error_code ec;
|
boost::system::error_code ec;
|
||||||
if (std::filesystem::exists(p, ec) && ec.value() == 0)
|
if (exists(p, ec) && !ec.failed())
|
||||||
{
|
{
|
||||||
if (is_directory(p, ec) && ec.value() == 0)
|
if (is_directory(p, ec) && !ec.failed())
|
||||||
{
|
{
|
||||||
std::filesystem::directory_iterator end_iter;
|
boost::filesystem::directory_iterator end_iter;
|
||||||
for (std::filesystem::directory_iterator dir_itr(p);
|
for (boost::filesystem::directory_iterator dir_itr(p);
|
||||||
dir_itr != end_iter;
|
dir_itr != end_iter;
|
||||||
++dir_itr)
|
++dir_itr)
|
||||||
{
|
{
|
||||||
if (std::filesystem::is_regular_file(dir_itr->status()))
|
if (boost::filesystem::is_regular_file(dir_itr->status()))
|
||||||
{
|
{
|
||||||
v.push_back(dir_itr->path().filename().string());
|
v.push_back(dir_itr->path().filename().string());
|
||||||
}
|
}
|
||||||
|
|
@ -197,24 +197,24 @@ U32 LLDir::deleteDirAndContents(const std::string& dir_name)
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
#ifdef LL_WINDOWS // or BOOST_WINDOWS_API
|
#ifdef LL_WINDOWS // or BOOST_WINDOWS_API
|
||||||
std::filesystem::path dir_path(ll_convert<std::wstring>(dir_name));
|
boost::filesystem::path dir_path(ll_convert<std::wstring>(dir_name));
|
||||||
#else
|
#else
|
||||||
std::filesystem::path dir_path(dir_name);
|
boost::filesystem::path dir_path(dir_name);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (std::filesystem::exists(dir_path))
|
if (boost::filesystem::exists(dir_path))
|
||||||
{
|
{
|
||||||
if (!std::filesystem::is_empty(dir_path))
|
if (!boost::filesystem::is_empty(dir_path))
|
||||||
{ // Directory has content
|
{ // Directory has content
|
||||||
num_deleted = (U32)std::filesystem::remove_all(dir_path);
|
num_deleted = (U32)boost::filesystem::remove_all(dir_path);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // Directory is empty
|
{ // Directory is empty
|
||||||
std::filesystem::remove(dir_path);
|
boost::filesystem::remove(dir_path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (std::filesystem::filesystem_error &er)
|
catch (boost::filesystem::filesystem_error &er)
|
||||||
{
|
{
|
||||||
LL_WARNS() << "Failed to delete " << dir_name << " with error " << er.code().message() << LL_ENDL;
|
LL_WARNS() << "Failed to delete " << dir_name << " with error " << er.code().message() << LL_ENDL;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,9 @@
|
||||||
|
|
||||||
#include "fix_macros.h"
|
#include "fix_macros.h"
|
||||||
#include "llregex.h"
|
#include "llregex.h"
|
||||||
#include <filesystem>
|
#include <boost/filesystem.hpp>
|
||||||
|
|
||||||
namespace fs = std::filesystem;
|
namespace fs = boost::filesystem;
|
||||||
|
|
||||||
static std::string glob_to_regex(const std::string& glob);
|
static std::string glob_to_regex(const std::string& glob);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
#include "llapp.h"
|
#include "llapp.h"
|
||||||
#include "llassettype.h"
|
#include "llassettype.h"
|
||||||
#include "lldir.h"
|
#include "lldir.h"
|
||||||
#include <filesystem>
|
#include <boost/filesystem.hpp>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
|
||||||
#include "lldiskcache.h"
|
#include "lldiskcache.h"
|
||||||
|
|
@ -83,7 +83,7 @@ LLDiskCache::LLDiskCache(const std::string& cache_dir,
|
||||||
// garbage.)
|
// garbage.)
|
||||||
|
|
||||||
// Other situation: B is trimming the cache and A wants to read a file that is
|
// Other situation: B is trimming the cache and A wants to read a file that is
|
||||||
// about to get deleted. std::filesystem::remove does whatever it is doing
|
// about to get deleted. boost::filesystem::remove does whatever it is doing
|
||||||
// before actually deleting the file. If A opens the file before the file is
|
// before actually deleting the file. If A opens the file before the file is
|
||||||
// actually gone, the OS call from B to delete the file will fail since the OS
|
// actually gone, the OS call from B to delete the file will fail since the OS
|
||||||
// will prevent this. B continues with the next file. If the file is already
|
// will prevent this. B continues with the next file. If the file is already
|
||||||
|
|
@ -96,10 +96,10 @@ void LLDiskCache::purge()
|
||||||
LL_INFOS() << "Total dir size before purge is " << dirFileSize(sCacheDir) << LL_ENDL;
|
LL_INFOS() << "Total dir size before purge is " << dirFileSize(sCacheDir) << LL_ENDL;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::error_code ec;
|
boost::system::error_code ec;
|
||||||
auto start_time = std::chrono::high_resolution_clock::now();
|
auto start_time = std::chrono::high_resolution_clock::now();
|
||||||
|
|
||||||
typedef std::pair<std::filesystem::file_time_type, std::pair<uintmax_t, std::string>> file_info_t;
|
typedef std::pair<std::time_t, std::pair<uintmax_t, std::string>> file_info_t;
|
||||||
std::vector<file_info_t> file_info;
|
std::vector<file_info_t> file_info;
|
||||||
|
|
||||||
#if LL_WINDOWS
|
#if LL_WINDOWS
|
||||||
|
|
@ -107,23 +107,23 @@ void LLDiskCache::purge()
|
||||||
#else
|
#else
|
||||||
std::string cache_path(sCacheDir);
|
std::string cache_path(sCacheDir);
|
||||||
#endif
|
#endif
|
||||||
if (std::filesystem::is_directory(cache_path, ec) && ec.value() == 0)
|
if (boost::filesystem::is_directory(cache_path, ec) && !ec.failed())
|
||||||
{
|
{
|
||||||
std::filesystem::directory_iterator iter(cache_path, ec);
|
boost::filesystem::directory_iterator iter(cache_path, ec);
|
||||||
while (iter != std::filesystem::directory_iterator() && ec.value() == 0)
|
while (iter != boost::filesystem::directory_iterator() && !ec.failed())
|
||||||
{
|
{
|
||||||
if (std::filesystem::is_regular_file(*iter, ec) && ec.value() == 0)
|
if (boost::filesystem::is_regular_file(*iter, ec) && !ec.failed())
|
||||||
{
|
{
|
||||||
if ((*iter).path().string().find(CACHE_FILENAME_PREFIX) != std::string::npos)
|
if ((*iter).path().string().find(CACHE_FILENAME_PREFIX) != std::string::npos)
|
||||||
{
|
{
|
||||||
uintmax_t file_size = std::filesystem::file_size(*iter, ec);
|
uintmax_t file_size = boost::filesystem::file_size(*iter, ec);
|
||||||
if (ec.value() != 0)
|
if (ec.failed())
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const std::string file_path = (*iter).path().string();
|
const std::string file_path = (*iter).path().string();
|
||||||
const std::filesystem::file_time_type file_time = std::filesystem::last_write_time(*iter, ec);
|
const std::time_t file_time = boost::filesystem::last_write_time(*iter, ec);
|
||||||
if (ec.value() != 0)
|
if (ec.failed())
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -159,8 +159,8 @@ void LLDiskCache::purge()
|
||||||
}
|
}
|
||||||
if (should_remove)
|
if (should_remove)
|
||||||
{
|
{
|
||||||
std::filesystem::remove(entry.second.second, ec);
|
boost::filesystem::remove(entry.second.second, ec);
|
||||||
if (ec.value() != 0)
|
if (ec.failed())
|
||||||
{
|
{
|
||||||
LL_WARNS() << "Failed to delete cache file " << entry.second.second << ": " << ec.message() << LL_ENDL;
|
LL_WARNS() << "Failed to delete cache file " << entry.second.second << ": " << ec.message() << LL_ENDL;
|
||||||
}
|
}
|
||||||
|
|
@ -224,23 +224,23 @@ void LLDiskCache::clearCache()
|
||||||
* the component files but it's called infrequently so it's
|
* the component files but it's called infrequently so it's
|
||||||
* likely just fine
|
* likely just fine
|
||||||
*/
|
*/
|
||||||
std::error_code ec;
|
boost::system::error_code ec;
|
||||||
#if LL_WINDOWS
|
#if LL_WINDOWS
|
||||||
std::wstring cache_path(ll_convert<std::wstring>(sCacheDir));
|
std::wstring cache_path(ll_convert<std::wstring>(sCacheDir));
|
||||||
#else
|
#else
|
||||||
std::string cache_path(sCacheDir);
|
std::string cache_path(sCacheDir);
|
||||||
#endif
|
#endif
|
||||||
if (std::filesystem::is_directory(cache_path, ec) && ec.value() == 0)
|
if (boost::filesystem::is_directory(cache_path, ec) && !ec.failed())
|
||||||
{
|
{
|
||||||
std::filesystem::directory_iterator iter(cache_path, ec);
|
boost::filesystem::directory_iterator iter(cache_path, ec);
|
||||||
while (iter != std::filesystem::directory_iterator() && ec.value() == 0)
|
while (iter != boost::filesystem::directory_iterator() && !ec.failed())
|
||||||
{
|
{
|
||||||
if (std::filesystem::is_regular_file(*iter, ec) && ec.value() == 0)
|
if (boost::filesystem::is_regular_file(*iter, ec) && !ec.failed())
|
||||||
{
|
{
|
||||||
if ((*iter).path().string().find(CACHE_FILENAME_PREFIX) != std::string::npos)
|
if ((*iter).path().string().find(CACHE_FILENAME_PREFIX) != std::string::npos)
|
||||||
{
|
{
|
||||||
std::filesystem::remove(*iter, ec);
|
boost::filesystem::remove(*iter, ec);
|
||||||
if (ec.value() != 0)
|
if (ec.failed())
|
||||||
{
|
{
|
||||||
LL_WARNS() << "Failed to delete cache file " << *iter << ": " << ec.message() << LL_ENDL;
|
LL_WARNS() << "Failed to delete cache file " << *iter << ": " << ec.message() << LL_ENDL;
|
||||||
}
|
}
|
||||||
|
|
@ -257,24 +257,24 @@ void LLDiskCache::removeOldVFSFiles()
|
||||||
static const char CACHE_FORMAT[] = "inv.llsd";
|
static const char CACHE_FORMAT[] = "inv.llsd";
|
||||||
static const char DB_FORMAT[] = "db2.x";
|
static const char DB_FORMAT[] = "db2.x";
|
||||||
|
|
||||||
std::error_code ec;
|
boost::system::error_code ec;
|
||||||
#if LL_WINDOWS
|
#if LL_WINDOWS
|
||||||
std::wstring cache_path(ll_convert<std::wstring>(gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "")));
|
std::wstring cache_path(ll_convert<std::wstring>(gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "")));
|
||||||
#else
|
#else
|
||||||
std::string cache_path(gDirUtilp->getExpandedFilename(LL_PATH_CACHE, ""));
|
std::string cache_path(gDirUtilp->getExpandedFilename(LL_PATH_CACHE, ""));
|
||||||
#endif
|
#endif
|
||||||
if (std::filesystem::is_directory(cache_path, ec) && ec.value() == 0)
|
if (boost::filesystem::is_directory(cache_path, ec) && !ec.failed())
|
||||||
{
|
{
|
||||||
std::filesystem::directory_iterator iter(cache_path, ec);
|
boost::filesystem::directory_iterator iter(cache_path, ec);
|
||||||
while (iter != std::filesystem::directory_iterator() && ec.value() == 0)
|
while (iter != boost::filesystem::directory_iterator() && !ec.failed())
|
||||||
{
|
{
|
||||||
if (std::filesystem::is_regular_file(*iter, ec) && ec.value() == 0)
|
if (boost::filesystem::is_regular_file(*iter, ec) && !ec.failed())
|
||||||
{
|
{
|
||||||
if (((*iter).path().string().find(CACHE_FORMAT) != std::string::npos) ||
|
if (((*iter).path().string().find(CACHE_FORMAT) != std::string::npos) ||
|
||||||
((*iter).path().string().find(DB_FORMAT) != std::string::npos))
|
((*iter).path().string().find(DB_FORMAT) != std::string::npos))
|
||||||
{
|
{
|
||||||
std::filesystem::remove(*iter, ec);
|
boost::filesystem::remove(*iter, ec);
|
||||||
if (ec.value() != 0)
|
if (ec.failed())
|
||||||
{
|
{
|
||||||
LL_WARNS() << "Failed to delete cache file " << *iter << ": " << ec.message() << LL_ENDL;
|
LL_WARNS() << "Failed to delete cache file " << *iter << ": " << ec.message() << LL_ENDL;
|
||||||
}
|
}
|
||||||
|
|
@ -298,23 +298,23 @@ uintmax_t LLDiskCache::dirFileSize(const std::string& dir)
|
||||||
* so if performance is ever an issue, optimizing this or removing it altogether,
|
* so if performance is ever an issue, optimizing this or removing it altogether,
|
||||||
* is an easy win.
|
* is an easy win.
|
||||||
*/
|
*/
|
||||||
std::error_code ec;
|
boost::system::error_code ec;
|
||||||
#if LL_WINDOWS
|
#if LL_WINDOWS
|
||||||
std::wstring dir_path(ll_convert<std::wstring>(dir));
|
std::wstring dir_path(ll_convert<std::wstring>(dir));
|
||||||
#else
|
#else
|
||||||
std::string dir_path(dir);
|
std::string dir_path(dir);
|
||||||
#endif
|
#endif
|
||||||
if (std::filesystem::is_directory(dir_path, ec) && ec.value() == 0)
|
if (boost::filesystem::is_directory(dir_path, ec) && !ec.failed())
|
||||||
{
|
{
|
||||||
std::filesystem::directory_iterator iter(dir_path, ec);
|
boost::filesystem::directory_iterator iter(dir_path, ec);
|
||||||
while (iter != std::filesystem::directory_iterator() && ec.value() == 0)
|
while (iter != boost::filesystem::directory_iterator() && !ec.failed())
|
||||||
{
|
{
|
||||||
if (std::filesystem::is_regular_file(*iter, ec) && ec.value() == 0)
|
if (boost::filesystem::is_regular_file(*iter, ec) && !ec.failed())
|
||||||
{
|
{
|
||||||
if ((*iter).path().string().find(CACHE_FILENAME_PREFIX) != std::string::npos)
|
if ((*iter).path().string().find(CACHE_FILENAME_PREFIX) != std::string::npos)
|
||||||
{
|
{
|
||||||
uintmax_t file_size = std::filesystem::file_size(*iter, ec);
|
uintmax_t file_size = boost::filesystem::file_size(*iter, ec);
|
||||||
if (ec.value() == 0)
|
if (!ec.failed())
|
||||||
{
|
{
|
||||||
total_file_size += file_size;
|
total_file_size += file_size;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue