diff options
| author | Leo Lam <leolino.lam@gmail.com> | 2017-06-15 21:24:42 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-06-15 21:24:42 +0200 |
| commit | 09c0a3caaff4961dc33df35cbf6baf09b94d56ec (patch) | |
| tree | 24bc5a9610afab5b95dd5930d8266c9288428510 /Source/Core/DiscIO/DiscScrubber.cpp | |
| parent | 335f54cac6ed15148fb7f959ccee9d63b583ea32 (diff) | |
| parent | 583406d900bd0ca9111135c6a9e526aed67e8322 (diff) | |
Merge pull request #2820 from JosJuice/filesystem
Filesystem redesign and performance improvements
Diffstat (limited to 'Source/Core/DiscIO/DiscScrubber.cpp')
| -rw-r--r-- | Source/Core/DiscIO/DiscScrubber.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/Source/Core/DiscIO/DiscScrubber.cpp b/Source/Core/DiscIO/DiscScrubber.cpp index fff2db9ab6..009081cbb6 100644 --- a/Source/Core/DiscIO/DiscScrubber.cpp +++ b/Source/Core/DiscIO/DiscScrubber.cpp @@ -219,14 +219,21 @@ bool DiscScrubber::ParsePartitionData(const Partition& partition, PartitionHeade MarkAsUsedE(partition_data_offset, header->fst_offset, header->fst_size); // Go through the filesystem and mark entries as used - for (const FileInfo& file : filesystem->GetFileList()) - { - DEBUG_LOG(DISCIO, "%s", file.m_FullPath.empty() ? "/" : file.m_FullPath.c_str()); - if ((file.m_NameOffset & 0x1000000) == 0) - MarkAsUsedE(partition_data_offset, file.m_Offset, file.m_FileSize); - } + ParseFileSystemData(partition_data_offset, filesystem->GetRoot()); return true; } +void DiscScrubber::ParseFileSystemData(u64 partition_data_offset, const FileInfo& directory) +{ + for (const DiscIO::FileInfo& file_info : directory) + { + DEBUG_LOG(DISCIO, "Scrubbing %s", file_info.GetPath().c_str()); + if (file_info.IsDirectory()) + ParseFileSystemData(partition_data_offset, file_info); + else + MarkAsUsedE(partition_data_offset, file_info.GetOffset(), file_info.GetSize()); + } +} + } // namespace DiscIO |
