diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/file_sys/archive.h | 8 | ||||
-rw-r--r-- | src/core/file_sys/archive_romfs.cpp | 10 | ||||
-rw-r--r-- | src/core/file_sys/archive_romfs.h | 7 | ||||
-rw-r--r-- | src/core/file_sys/archive_sdmc.cpp | 12 | ||||
-rw-r--r-- | src/core/file_sys/archive_sdmc.h | 7 |
5 files changed, 44 insertions, 0 deletions
diff --git a/src/core/file_sys/archive.h b/src/core/file_sys/archive.h index 67440ef58..560db6dea 100644 --- a/src/core/file_sys/archive.h +++ b/src/core/file_sys/archive.h @@ -10,6 +10,7 @@ #include "common/bit_field.h" #include "core/file_sys/file.h" +#include "core/file_sys/directory.h" #include "core/hle/kernel/kernel.h" @@ -56,6 +57,13 @@ public: virtual std::unique_ptr<File> OpenFile(const std::string& path, const Mode mode) const = 0; /** + * Open a directory specified by its path + * @param path Path relative to the archive + * @return Opened directory, or nullptr + */ + virtual std::unique_ptr<Directory> OpenDirectory(const std::string& path) const = 0; + + /** * Read data from the archive * @param offset Offset in bytes to start reading data from * @param length Length in bytes of data to read from archive diff --git a/src/core/file_sys/archive_romfs.cpp b/src/core/file_sys/archive_romfs.cpp index 99ded4d8b..9bab3471f 100644 --- a/src/core/file_sys/archive_romfs.cpp +++ b/src/core/file_sys/archive_romfs.cpp @@ -5,6 +5,7 @@ #include "common/common_types.h" #include "core/file_sys/archive_romfs.h" +#include "core/file_sys/directory_romfs.h" #include "core/file_sys/file_romfs.h" //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -33,6 +34,15 @@ std::unique_ptr<File> Archive_RomFS::OpenFile(const std::string& path, const Mod } /** + * Open a directory specified by its path + * @param path Path relative to the archive + * @return Opened directory, or nullptr + */ +std::unique_ptr<Directory> Archive_RomFS::OpenDirectory(const std::string& path) const { + return std::unique_ptr<Directory>(new Directory_RomFS); +} + +/** * Read data from the archive * @param offset Offset in bytes to start reading data from * @param length Length in bytes of data to read from archive diff --git a/src/core/file_sys/archive_romfs.h b/src/core/file_sys/archive_romfs.h index a7669dd71..fcdefa95f 100644 --- a/src/core/file_sys/archive_romfs.h +++ b/src/core/file_sys/archive_romfs.h @@ -37,6 +37,13 @@ public: std::unique_ptr<File> OpenFile(const std::string& path, const Mode mode) const override; /** + * Open a directory specified by its path + * @param path Path relative to the archive + * @return Opened directory, or nullptr + */ + std::unique_ptr<Directory> OpenDirectory(const std::string& path) const override; + + /** * Read data from the archive * @param offset Offset in bytes to start reading data from * @param length Length in bytes of data to read from archive diff --git a/src/core/file_sys/archive_sdmc.cpp b/src/core/file_sys/archive_sdmc.cpp index fb155430d..30d33be5f 100644 --- a/src/core/file_sys/archive_sdmc.cpp +++ b/src/core/file_sys/archive_sdmc.cpp @@ -8,6 +8,7 @@ #include "common/file_util.h" #include "core/file_sys/archive_sdmc.h" +#include "core/file_sys/directory_sdmc.h" #include "core/file_sys/file_sdmc.h" //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -45,6 +46,17 @@ std::unique_ptr<File> Archive_SDMC::OpenFile(const std::string& path, const Mode } /** + * Open a directory specified by its path + * @param path Path relative to the archive + * @return Opened directory, or nullptr + */ +std::unique_ptr<Directory> Archive_SDMC::OpenDirectory(const std::string& path) const { + DEBUG_LOG(FILESYS, "called path=%s", path.c_str()); + Directory_SDMC* directory = new Directory_SDMC(this, path); + return std::unique_ptr<Directory>(directory); +} + +/** * Read data from the archive * @param offset Offset in bytes to start reading archive from * @param length Length in bytes to read data from archive diff --git a/src/core/file_sys/archive_sdmc.h b/src/core/file_sys/archive_sdmc.h index 931817e5b..946f8b957 100644 --- a/src/core/file_sys/archive_sdmc.h +++ b/src/core/file_sys/archive_sdmc.h @@ -37,6 +37,13 @@ public: std::unique_ptr<File> OpenFile(const std::string& path, const Mode mode) const override; /** + * Open a directory specified by its path + * @param path Path relative to the archive + * @return Opened directory, or nullptr + */ + std::unique_ptr<Directory> OpenDirectory(const std::string& path) const override; + + /** * Read data from the archive * @param offset Offset in bytes to start reading archive from * @param length Length in bytes to read data from archive |