diff options
Diffstat (limited to 'src/core/file_sys/partition_filesystem.h')
-rw-r--r-- | src/core/file_sys/partition_filesystem.h | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/src/core/file_sys/partition_filesystem.h b/src/core/file_sys/partition_filesystem.h index 9656b40bf..9c5810cf1 100644 --- a/src/core/file_sys/partition_filesystem.h +++ b/src/core/file_sys/partition_filesystem.h @@ -10,7 +10,6 @@ #include "common/common_funcs.h" #include "common/common_types.h" #include "common/swap.h" -#include "core/file_sys/vfs.h" namespace Loader { enum class ResultStatus; @@ -22,19 +21,19 @@ namespace FileSys { * Helper which implements an interface to parse PFS/HFS filesystems. * Data can either be loaded from a file path or data with an offset into it. */ -class PartitionFilesystem : public ReadOnlyVfsDirectory { +class PartitionFilesystem { public: - explicit PartitionFilesystem(std::shared_ptr<VfsFile> file); - Loader::ResultStatus GetStatus() const; + Loader::ResultStatus Load(const std::string& file_path, size_t offset = 0); + Loader::ResultStatus Load(const std::vector<u8>& file_data, size_t offset = 0); - std::vector<std::shared_ptr<VfsFile>> GetFiles() const override; - std::vector<std::shared_ptr<VfsDirectory>> GetSubdirectories() const override; - std::string GetName() const override; - std::shared_ptr<VfsDirectory> GetParentDirectory() const override; - void PrintDebugInfo() const; + u32 GetNumEntries() const; + u64 GetEntryOffset(u32 index) const; + u64 GetEntrySize(u32 index) const; + std::string GetEntryName(u32 index) const; + u64 GetFileOffset(const std::string& name) const; + u64 GetFileSize(const std::string& name) const; -protected: - bool ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) override; + void Print() const; private: struct Header { @@ -73,14 +72,16 @@ private: #pragma pack(pop) - Loader::ResultStatus status; + struct FileEntry { + FSEntry fs_entry; + std::string name; + }; Header pfs_header; bool is_hfs; size_t content_offset; - std::vector<VirtualFile> pfs_files; - std::vector<VirtualDir> pfs_dirs; + std::vector<FileEntry> pfs_entries; }; } // namespace FileSys |