summaryrefslogtreecommitdiffstats
path: root/src/core/file_sys/archive_sdmcwriteonly.h
diff options
context:
space:
mode:
authorwwylele <wwylele@gmail.com>2016-10-18 11:27:51 +0200
committerwwylele <wwylele@gmail.com>2016-11-19 17:55:34 +0100
commit098778369962f8ec5eba6ccc91b2846c72cb0005 (patch)
treea07c47167884f8837448efb9ff7de9fe3f5c0f61 /src/core/file_sys/archive_sdmcwriteonly.h
parentFileSys: add SDMCArchive (diff)
downloadyuzu-098778369962f8ec5eba6ccc91b2846c72cb0005.tar
yuzu-098778369962f8ec5eba6ccc91b2846c72cb0005.tar.gz
yuzu-098778369962f8ec5eba6ccc91b2846c72cb0005.tar.bz2
yuzu-098778369962f8ec5eba6ccc91b2846c72cb0005.tar.lz
yuzu-098778369962f8ec5eba6ccc91b2846c72cb0005.tar.xz
yuzu-098778369962f8ec5eba6ccc91b2846c72cb0005.tar.zst
yuzu-098778369962f8ec5eba6ccc91b2846c72cb0005.zip
Diffstat (limited to 'src/core/file_sys/archive_sdmcwriteonly.h')
-rw-r--r--src/core/file_sys/archive_sdmcwriteonly.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/core/file_sys/archive_sdmcwriteonly.h b/src/core/file_sys/archive_sdmcwriteonly.h
new file mode 100644
index 000000000..ed977485a
--- /dev/null
+++ b/src/core/file_sys/archive_sdmcwriteonly.h
@@ -0,0 +1,57 @@
+// Copyright 2016 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "core/file_sys/archive_sdmc.h"
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// FileSys namespace
+
+namespace FileSys {
+
+/**
+ * Archive backend for SDMC write-only archive.
+ * The behaviour of SDMCWriteOnlyArchive is almost the same as SDMCArchive, except for
+ * - OpenDirectory is unsupported;
+ * - OpenFile with read flag is unsupported.
+ */
+class SDMCWriteOnlyArchive : public SDMCArchive {
+public:
+ SDMCWriteOnlyArchive(const std::string& mount_point) : SDMCArchive(mount_point) {}
+
+ std::string GetName() const override {
+ return "SDMCWriteOnlyArchive: " + mount_point;
+ }
+
+ ResultVal<std::unique_ptr<FileBackend>> OpenFile(const Path& path,
+ const Mode& mode) const override;
+
+ ResultVal<std::unique_ptr<DirectoryBackend>> OpenDirectory(const Path& path) const override;
+};
+
+/// File system interface to the SDMC write-only archive
+class ArchiveFactory_SDMCWriteOnly final : public ArchiveFactory {
+public:
+ ArchiveFactory_SDMCWriteOnly(const std::string& mount_point);
+
+ /**
+ * Initialize the archive.
+ * @return true if it initialized successfully
+ */
+ bool Initialize();
+
+ std::string GetName() const override {
+ return "SDMCWriteOnly";
+ }
+
+ ResultVal<std::unique_ptr<ArchiveBackend>> Open(const Path& path) override;
+ ResultCode Format(const Path& path, const FileSys::ArchiveFormatInfo& format_info) override;
+ ResultVal<ArchiveFormatInfo> GetFormatInfo(const Path& path) const override;
+
+private:
+ std::string sdmc_directory;
+};
+
+} // namespace FileSys