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); 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 struct stat sb
{ {
@@ -81,10 +81,11 @@ namespace lms::core::pathUtils
else else
{ {
ec = std::error_code{}; 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) 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 else
{ {
// TODO get status once and then test regular file/directory
if (std::filesystem::is_regular_file(*itPath, ec)) if (std::filesystem::is_regular_file(*itPath, ec))
{ {
continueExploring = cb(ec, *itPath); continueExploring = cb(ec, *itPath);
+6 -1
View File
@@ -34,8 +34,13 @@ namespace lms::core::pathUtils
// Create it if needed // Create it if needed
bool ensureDirectory(const std::filesystem::path& dir); 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 // 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 // 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 = {}); 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; FileToScan res;
res.lastWriteTime = core::pathUtils::getLastWriteTime(file, ec); const core::pathUtils::FileInfo fileInfo{ core::pathUtils::getFileInfo(file, ec) };
if (!ec)
res.relativePath = std::filesystem::relative(file, mediaLibrary.rootDirectory, ec);
if (!ec)
res.fileSize = std::filesystem::file_size(file, ec);
if (!ec) if (!ec)
{ {
res.filePath = file; res.filePath = file;
res.mediaLibrary = mediaLibrary; res.mediaLibrary = mediaLibrary;
res.relativePath = std::filesystem::relative(file, mediaLibrary.rootDirectory, ec);
res.lastWriteTime = fileInfo.lastWriteTime;
res.fileSize = fileInfo.fileSize;
} }
return res; return res;