summaryrefslogtreecommitdiffstats
path: root/src/core/file_sys/vfs_real.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2021-09-16 05:13:26 +0200
committerGitHub <noreply@github.com>2021-09-16 05:13:26 +0200
commitf6d5444293d263c1a9afc0416e24a8b9262b519f (patch)
tree5bd81eb2caf3b094382bcc34388ac73af1165aa5 /src/core/file_sys/vfs_real.cpp
parentMerge pull request #7014 from Morph1984/log-pipeline-count (diff)
parentvfs: Partially implement GetFileTimeStampRaw (diff)
downloadyuzu-f6d5444293d263c1a9afc0416e24a8b9262b519f.tar
yuzu-f6d5444293d263c1a9afc0416e24a8b9262b519f.tar.gz
yuzu-f6d5444293d263c1a9afc0416e24a8b9262b519f.tar.bz2
yuzu-f6d5444293d263c1a9afc0416e24a8b9262b519f.tar.lz
yuzu-f6d5444293d263c1a9afc0416e24a8b9262b519f.tar.xz
yuzu-f6d5444293d263c1a9afc0416e24a8b9262b519f.tar.zst
yuzu-f6d5444293d263c1a9afc0416e24a8b9262b519f.zip
Diffstat (limited to 'src/core/file_sys/vfs_real.cpp')
-rw-r--r--src/core/file_sys/vfs_real.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/core/file_sys/vfs_real.cpp b/src/core/file_sys/vfs_real.cpp
index 3dad54f49..f4073b76a 100644
--- a/src/core/file_sys/vfs_real.cpp
+++ b/src/core/file_sys/vfs_real.cpp
@@ -13,6 +13,13 @@
#include "common/logging/log.h"
#include "core/file_sys/vfs_real.h"
+// For FileTimeStampRaw
+#include <sys/stat.h>
+
+#ifdef _MSC_VER
+#define stat _stat64
+#endif
+
namespace FileSys {
namespace FS = Common::FS;
@@ -392,6 +399,28 @@ std::vector<VirtualFile> RealVfsDirectory::GetFiles() const {
return IterateEntries<RealVfsFile, VfsFile>();
}
+FileTimeStampRaw RealVfsDirectory::GetFileTimeStamp(std::string_view path_) const {
+ const auto full_path = FS::SanitizePath(path + '/' + std::string(path_));
+ const auto fs_path = std::filesystem::path{FS::ToU8String(full_path)};
+ struct stat file_status;
+
+#ifdef _WIN32
+ const auto stat_result = _wstat64(fs_path.c_str(), &file_status);
+#else
+ const auto stat_result = stat(fs_path.c_str(), &file_status);
+#endif
+
+ if (stat_result != 0) {
+ return {};
+ }
+
+ return {
+ .created{static_cast<u64>(file_status.st_ctime)},
+ .accessed{static_cast<u64>(file_status.st_atime)},
+ .modified{static_cast<u64>(file_status.st_mtime)},
+ };
+}
+
std::vector<VirtualDir> RealVfsDirectory::GetSubdirectories() const {
return IterateEntries<RealVfsDirectory, VfsDirectory>();
}