diff --git a/Source/Core/DiscIO/FileSystemGCWii.cpp b/Source/Core/DiscIO/FileSystemGCWii.cpp index fc0e40f055..f8ddab28fe 100644 --- a/Source/Core/DiscIO/FileSystemGCWii.cpp +++ b/Source/Core/DiscIO/FileSystemGCWii.cpp @@ -42,12 +42,34 @@ FileSystemGCWii::~FileSystemGCWii() m_FileInfoVector.clear(); } +const std::vector<FileInfoGCWii>& FileSystemGCWii::GetFileList() +{ + if (!m_Initialized) + InitFileSystem(); + + return m_FileInfoVector; +} + +const FileInfo* FileSystemGCWii::FindFileInfo(const std::string& _rFullPath) +{ + if (!m_Initialized) + InitFileSystem(); + + for (size_t i = 0; i < m_FileInfoVector.size(); ++i) + { + if (!strcasecmp(GetPathFromFSTOffset(i).c_str(), _rFullPath.c_str())) + return &m_FileInfoVector[i]; + } + + return nullptr; +} + u64 FileSystemGCWii::GetFileSize(const std::string& _rFullPath) { if (!m_Initialized) InitFileSystem(); - const FileInfoGCWii* pFileInfo = FindFileInfo(_rFullPath); + const FileInfo* pFileInfo = FindFileInfo(_rFullPath); if (pFileInfo != nullptr && !pFileInfo->IsDirectory()) return pFileInfo->GetSize(); @@ -119,7 +141,7 @@ u64 FileSystemGCWii::ReadFile(const std::string& _rFullPath, u8* _pBuffer, u64 _ if (!m_Initialized) InitFileSystem(); - const FileInfoGCWii* pFileInfo = FindFileInfo(_rFullPath); + const FileInfo* pFileInfo = FindFileInfo(_rFullPath); if (pFileInfo == nullptr) return 0; @@ -142,7 +164,7 @@ bool FileSystemGCWii::ExportFile(const std::string& _rFullPath, const std::strin if (!m_Initialized) InitFileSystem(); - const FileInfoGCWii* pFileInfo = FindFileInfo(_rFullPath); + const FileInfo* pFileInfo = FindFileInfo(_rFullPath); if (!pFileInfo) return false; @@ -276,28 +298,6 @@ std::string FileSystemGCWii::GetStringFromOffset(u64 _Offset) const return SHIFTJISToUTF8(data); } -const std::vector<FileInfoGCWii>& FileSystemGCWii::GetFileList() -{ - if (!m_Initialized) - InitFileSystem(); - - return m_FileInfoVector; -} - -const FileInfoGCWii* FileSystemGCWii::FindFileInfo(const std::string& _rFullPath) -{ - if (!m_Initialized) - InitFileSystem(); - - for (size_t i = 0; i < m_FileInfoVector.size(); ++i) - { - if (!strcasecmp(GetPathFromFSTOffset(i).c_str(), _rFullPath.c_str())) - return &m_FileInfoVector[i]; - } - - return nullptr; -} - bool FileSystemGCWii::DetectFileSystem() { if (m_rVolume->ReadSwapped<u32>(0x18, m_partition) == u32(0x5D1C9EA3)) diff --git a/Source/Core/DiscIO/FileSystemGCWii.h b/Source/Core/DiscIO/FileSystemGCWii.h index 1f442e4d40..37e972e542 100644 --- a/Source/Core/DiscIO/FileSystemGCWii.h +++ b/Source/Core/DiscIO/FileSystemGCWii.h @@ -42,8 +42,9 @@ public: FileSystemGCWii(const Volume* _rVolume, const Partition& partition); ~FileSystemGCWii() override; bool IsValid() const override { return m_Valid; } - u64 GetFileSize(const std::string& _rFullPath) override; const std::vector<FileInfoGCWii>& GetFileList() override; + const FileInfo* FindFileInfo(const std::string& path) override; + u64 GetFileSize(const std::string& _rFullPath) override; std::string GetPath(u64 _Address) override; std::string GetPathFromFSTOffset(size_t file_info_offset) override; u64 ReadFile(const std::string& _rFullPath, u8* _pBuffer, u64 _MaxBufferSize, @@ -61,7 +62,6 @@ private: std::vector<FileInfoGCWii> m_FileInfoVector; std::string GetStringFromOffset(u64 _Offset) const; - const FileInfoGCWii* FindFileInfo(const std::string& _rFullPath); bool DetectFileSystem(); void InitFileSystem(); }; diff --git a/Source/Core/DiscIO/Filesystem.h b/Source/Core/DiscIO/Filesystem.h index 798da5ba07..c27d6e9636 100644 --- a/Source/Core/DiscIO/Filesystem.h +++ b/Source/Core/DiscIO/Filesystem.h @@ -41,6 +41,7 @@ public: // TODO: Should only return FileInfo, not FileInfoGCWii virtual const std::vector<FileInfoGCWii>& GetFileList() = 0; virtual u64 GetFileSize(const std::string& _rFullPath) = 0; + virtual const FileInfo* FindFileInfo(const std::string& path) = 0; virtual u64 ReadFile(const std::string& _rFullPath, u8* _pBuffer, u64 _MaxBufferSize, u64 _OffsetInFile = 0) = 0; virtual bool ExportFile(const std::string& _rFullPath, const std::string& _rExportFilename) = 0;