diff options
Diffstat (limited to 'src/core/file_sys')
| -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 | 
