Removed useless stat call

This commit is contained in:
emeric
2025-07-07 13:44:50 +02:00
parent 747b5ef6e8
commit 49afdb3db6
3 changed files with 16 additions and 11 deletions
+6 -4
View File
@@ -67,9 +67,9 @@ namespace lms::core::pathUtils
return std::filesystem::create_directory(dir);
}
Wt::WDateTime getLastWriteTime(const std::filesystem::path& file, std::error_code& ec)
FileInfo getFileInfo(const std::filesystem::path& file, std::error_code& ec)
{
Wt::WDateTime res;
FileInfo fileInfo;
struct stat sb
{
@@ -81,10 +81,11 @@ namespace lms::core::pathUtils
else
{
ec = std::error_code{};
res = Wt::WDateTime::fromTime_t(sb.st_mtime);
fileInfo.lastWriteTime = Wt::WDateTime::fromTime_t(sb.st_mtime);
fileInfo.fileSize = sb.st_size;
}
return res;
return fileInfo;
}
bool exploreFilesRecursive(const std::filesystem::path& directory, std::function<bool(std::error_code, const std::filesystem::path&)> cb, const std::filesystem::path* excludeDirFileName)
@@ -120,6 +121,7 @@ namespace lms::core::pathUtils
}
else
{
// TODO get status once and then test regular file/directory
if (std::filesystem::is_regular_file(*itPath, ec))
{
continueExploring = cb(ec, *itPath);
+6 -1
View File
@@ -34,8 +34,13 @@ namespace lms::core::pathUtils
// Create it if needed
bool ensureDirectory(const std::filesystem::path& dir);
struct FileInfo
{
Wt::WDateTime lastWriteTime; // Last write time of the file since Epoch
std::uint64_t fileSize{}; // Size of the file in bytes
};
// Get the last write time since Epoch
Wt::WDateTime getLastWriteTime(const std::filesystem::path& file, std::error_code& ec);
FileInfo getFileInfo(const std::filesystem::path& file, std::error_code& ec);
// returns false if aborted by user
bool exploreFilesRecursive(const std::filesystem::path& directory, std::function<bool(std::error_code, const std::filesystem::path&)> cb, const std::filesystem::path* excludeDirFileName = {});
@@ -71,16 +71,14 @@ namespace lms::scanner
{
FileToScan res;
res.lastWriteTime = core::pathUtils::getLastWriteTime(file, ec);
if (!ec)
res.relativePath = std::filesystem::relative(file, mediaLibrary.rootDirectory, ec);
if (!ec)
res.fileSize = std::filesystem::file_size(file, ec);
const core::pathUtils::FileInfo fileInfo{ core::pathUtils::getFileInfo(file, ec) };
if (!ec)
{
res.filePath = file;
res.mediaLibrary = mediaLibrary;
res.relativePath = std::filesystem::relative(file, mediaLibrary.rootDirectory, ec);
res.lastWriteTime = fileInfo.lastWriteTime;
res.fileSize = fileInfo.fileSize;
}
return res;