diff options
| author | comex <comexk@gmail.com> | 2015-06-02 20:28:25 -0400 |
|---|---|---|
| committer | comex <comexk@gmail.com> | 2015-06-02 20:28:25 -0400 |
| commit | 2ae6fb9240ffd0a25727bede295d0d3afa3cab0c (patch) | |
| tree | e02ba90b4531807a39839857dcf3da8fa28d6666 /Source/Core/DiscIO | |
| parent | 36b554613ce15246bd37570a87b973ffcaa9b160 (diff) | |
| parent | d43a920924b11a825d474f75cba3996b676bb731 (diff) | |
Merge pull request #2338 from JosJuice/getfilelist-return
Filesystem: Return file list reference instead of modifying argument
Diffstat (limited to 'Source/Core/DiscIO')
| -rw-r--r-- | Source/Core/DiscIO/DiscScrubber.cpp | 17 | ||||
| -rw-r--r-- | Source/Core/DiscIO/FileMonitor.cpp | 8 | ||||
| -rw-r--r-- | Source/Core/DiscIO/FileSystemGCWii.cpp | 10 | ||||
| -rw-r--r-- | Source/Core/DiscIO/FileSystemGCWii.h | 2 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Filesystem.h | 2 |
5 files changed, 9 insertions, 30 deletions
diff --git a/Source/Core/DiscIO/DiscScrubber.cpp b/Source/Core/DiscIO/DiscScrubber.cpp index b730361292..581efc6190 100644 --- a/Source/Core/DiscIO/DiscScrubber.cpp +++ b/Source/Core/DiscIO/DiscScrubber.cpp @@ -274,9 +274,6 @@ bool ParsePartitionData(SPartition& _rPartition) } else { - std::vector<const SFileInfo *> Files; - size_t numFiles = filesystem->GetFileList(Files); - // Mark things as used which are not in the filesystem // Header, Header Information, Apploader ReadFromVolume(0x2440 + 0x14, 4, _rPartition.Header.ApploaderSize, true); @@ -305,18 +302,14 @@ bool ParsePartitionData(SPartition& _rPartition) , _rPartition.Header.FSTSize); // Go through the filesystem and mark entries as used - for (size_t currentFile = 0; currentFile < numFiles; currentFile++) + for (SFileInfo file : filesystem->GetFileList()) { - DEBUG_LOG(DISCIO, "%s", currentFile ? (*Files.at(currentFile)).m_FullPath.c_str() : "/"); + DEBUG_LOG(DISCIO, file.m_FullPath.empty() ? "/" : file.m_FullPath.c_str()); // Just 1byte for directory? - it will end up reserving a cluster this way - if ((*Files.at(currentFile)).m_NameOffset & 0x1000000) - MarkAsUsedE(_rPartition.Offset - + _rPartition.Header.DataOffset - , (*Files.at(currentFile)).m_Offset, 1); + if (file.m_NameOffset & 0x1000000) + MarkAsUsedE(_rPartition.Offset + _rPartition.Header.DataOffset, file.m_Offset, 1); else - MarkAsUsedE(_rPartition.Offset - + _rPartition.Header.DataOffset - , (*Files.at(currentFile)).m_Offset, (*Files.at(currentFile)).m_FileSize); + MarkAsUsedE(_rPartition.Offset + _rPartition.Header.DataOffset, file.m_Offset, file.m_FileSize); } } diff --git a/Source/Core/DiscIO/FileMonitor.cpp b/Source/Core/DiscIO/FileMonitor.cpp index 61bbace2da..7a3c28fd8a 100644 --- a/Source/Core/DiscIO/FileMonitor.cpp +++ b/Source/Core/DiscIO/FileMonitor.cpp @@ -27,7 +27,6 @@ namespace FileMon static DiscIO::IVolume *OpenISO = nullptr; static DiscIO::IFileSystem *pFileSystem = nullptr; -static std::vector<const DiscIO::SFileInfo *> DiscFiles; static std::string ISOFile = "", CurrentFile = ""; static bool FileAccess = true; @@ -73,8 +72,6 @@ void ReadFileSystem(const std::string& filename) pFileSystem = nullptr; } - // DiscFiles' pointers are no longer valid after pFileSystem is cleared - DiscFiles.clear(); OpenISO = DiscIO::CreateVolumeFromFilename(filename); if (!OpenISO) return; @@ -85,8 +82,6 @@ void ReadFileSystem(const std::string& filename) if (!pFileSystem) return; - - pFileSystem->GetFileList(DiscFiles); } FileAccess = true; @@ -166,9 +161,6 @@ void Close() pFileSystem = nullptr; } - // DiscFiles' pointers are no longer valid after pFileSystem is cleared - DiscFiles.clear(); - ISOFile = ""; CurrentFile = ""; FileAccess = true; diff --git a/Source/Core/DiscIO/FileSystemGCWii.cpp b/Source/Core/DiscIO/FileSystemGCWii.cpp index 242cc07713..cd6f815629 100644 --- a/Source/Core/DiscIO/FileSystemGCWii.cpp +++ b/Source/Core/DiscIO/FileSystemGCWii.cpp @@ -210,18 +210,12 @@ std::string CFileSystemGCWii::GetStringFromOffset(u64 _Offset) const return SHIFTJISToUTF8(data); } -size_t CFileSystemGCWii::GetFileList(std::vector<const SFileInfo *> &_rFilenames) +const std::vector<SFileInfo>& CFileSystemGCWii::GetFileList() { if (!m_Initialized) InitFileSystem(); - if (_rFilenames.size()) - PanicAlert("GetFileList : input list has contents?"); - _rFilenames.clear(); - _rFilenames.reserve(m_FileInfoVector.size()); - for (auto& fileInfo : m_FileInfoVector) - _rFilenames.push_back(&fileInfo); - return m_FileInfoVector.size(); + return m_FileInfoVector; } const SFileInfo* CFileSystemGCWii::FindFileInfo(const std::string& _rFullPath) diff --git a/Source/Core/DiscIO/FileSystemGCWii.h b/Source/Core/DiscIO/FileSystemGCWii.h index b84b5b95db..0112b695ef 100644 --- a/Source/Core/DiscIO/FileSystemGCWii.h +++ b/Source/Core/DiscIO/FileSystemGCWii.h @@ -23,7 +23,7 @@ public: virtual ~CFileSystemGCWii(); virtual bool IsValid() const override { return m_Valid; } virtual u64 GetFileSize(const std::string& _rFullPath) override; - virtual size_t GetFileList(std::vector<const SFileInfo *> &_rFilenames) override; + virtual const std::vector<SFileInfo>& GetFileList() override; virtual const std::string GetFileName(u64 _Address) override; virtual u64 ReadFile(const std::string& _rFullPath, u8* _pBuffer, u64 _MaxBufferSize, u64 _OffsetInFile) override; virtual bool ExportFile(const std::string& _rFullPath, const std::string&_rExportFilename) override; diff --git a/Source/Core/DiscIO/Filesystem.h b/Source/Core/DiscIO/Filesystem.h index 8113a8d37a..1f3e73f3ef 100644 --- a/Source/Core/DiscIO/Filesystem.h +++ b/Source/Core/DiscIO/Filesystem.h @@ -43,7 +43,7 @@ public: virtual ~IFileSystem(); virtual bool IsValid() const = 0; - virtual size_t GetFileList(std::vector<const SFileInfo *> &_rFilenames) = 0; + virtual const std::vector<SFileInfo>& GetFileList() = 0; virtual u64 GetFileSize(const std::string& _rFullPath) = 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; |
