summaryrefslogtreecommitdiff
path: root/Source/Core/DiscIO
diff options
context:
space:
mode:
authorcomex <comexk@gmail.com>2015-06-02 20:28:25 -0400
committercomex <comexk@gmail.com>2015-06-02 20:28:25 -0400
commit2ae6fb9240ffd0a25727bede295d0d3afa3cab0c (patch)
treee02ba90b4531807a39839857dcf3da8fa28d6666 /Source/Core/DiscIO
parent36b554613ce15246bd37570a87b973ffcaa9b160 (diff)
parentd43a920924b11a825d474f75cba3996b676bb731 (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.cpp17
-rw-r--r--Source/Core/DiscIO/FileMonitor.cpp8
-rw-r--r--Source/Core/DiscIO/FileSystemGCWii.cpp10
-rw-r--r--Source/Core/DiscIO/FileSystemGCWii.h2
-rw-r--r--Source/Core/DiscIO/Filesystem.h2
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;