mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 06:09:50 -06:00
Filesystem: Return file list reference instead of modifying argument
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -215,18 +215,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)
|
||||
|
@ -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, size_t _MaxBufferSize) override;
|
||||
virtual bool ExportFile(const std::string& _rFullPath, const std::string&_rExportFilename) override;
|
||||
|
@ -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, size_t _MaxBufferSize) = 0;
|
||||
virtual bool ExportFile(const std::string& _rFullPath, const std::string& _rExportFilename) = 0;
|
||||
|
Reference in New Issue
Block a user