From 554e2f2f983824bee174465c79b9ad3c27e8208f Mon Sep 17 00:00:00 2001
From: Zach Hilman <zachhilman@gmail.com>
Date: Fri, 28 Jun 2019 21:02:50 -0400
Subject: [PATCH] reporter: Add report class for filesystem access logs

---
 src/core/reporter.cpp | 18 ++++++++++++++++++
 src/core/reporter.h   |  7 +++++++
 2 files changed, 25 insertions(+)

diff --git a/src/core/reporter.cpp b/src/core/reporter.cpp
index 7740225696..059467318d 100644
--- a/src/core/reporter.cpp
+++ b/src/core/reporter.cpp
@@ -335,6 +335,24 @@ void Reporter::SaveErrorReport(u64 title_id, ResultCode result,
     SaveToFile(std::move(out), GetPath("error_report", title_id, timestamp));
 }
 
+void Reporter::SaveFilesystemAccessReport(Service::FileSystem::LogMode log_mode,
+                                          std::string log_message) const {
+    if (!IsReportingEnabled())
+        return;
+
+    const auto timestamp = GetTimestamp();
+    const auto title_id = system.CurrentProcess()->GetTitleID();
+    json out;
+
+    out["yuzu_version"] = GetYuzuVersionData();
+    out["report_common"] = GetReportCommonData(title_id, RESULT_SUCCESS, timestamp);
+
+    out["log_mode"] = fmt::format("{:08X}", static_cast<u32>(log_mode));
+    out["log_message"] = std::move(log_message);
+
+    SaveToFile(std::move(out), GetPath("filesystem_access_report", title_id, timestamp));
+}
+
 void Reporter::SaveUserReport() const {
     if (!IsReportingEnabled())
         return;
diff --git a/src/core/reporter.h b/src/core/reporter.h
index 3de19c0f77..ba95c369e4 100644
--- a/src/core/reporter.h
+++ b/src/core/reporter.h
@@ -14,6 +14,10 @@ namespace Kernel {
 class HLERequestContext;
 } // namespace Kernel
 
+namespace Service::FileSystem {
+enum class LogMode : u32;
+}
+
 namespace Core {
 
 class Reporter {
@@ -45,6 +49,9 @@ public:
                          std::optional<std::string> custom_text_main = {},
                          std::optional<std::string> custom_text_detail = {}) const;
 
+    void SaveFilesystemAccessReport(Service::FileSystem::LogMode log_mode,
+                                    std::string log_message) const;
+
     void SaveUserReport() const;
 
 private: