summaryrefslogtreecommitdiff
path: root/Source/Core/DiscIO/DiscScrubber.cpp
diff options
context:
space:
mode:
authorLeo Lam <leolino.lam@gmail.com>2017-06-15 21:24:42 +0200
committerGitHub <noreply@github.com>2017-06-15 21:24:42 +0200
commit09c0a3caaff4961dc33df35cbf6baf09b94d56ec (patch)
tree24bc5a9610afab5b95dd5930d8266c9288428510 /Source/Core/DiscIO/DiscScrubber.cpp
parent335f54cac6ed15148fb7f959ccee9d63b583ea32 (diff)
parent583406d900bd0ca9111135c6a9e526aed67e8322 (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.cpp19
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