diff options
author | bunnei <bunneidev@gmail.com> | 2018-08-04 20:33:11 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-04 20:33:11 +0200 |
commit | 2b06301dbfbfe79687219bf7783a6d1b47695401 (patch) | |
tree | 222cc27ecbc7f7e86d2edef8d36436600dee7d7a /src/core/file_sys/vfs.cpp | |
parent | Merge pull request #919 from lioncash/sign (diff) | |
parent | Add missing parameter to files.push_back() (diff) | |
download | yuzu-2b06301dbfbfe79687219bf7783a6d1b47695401.tar yuzu-2b06301dbfbfe79687219bf7783a6d1b47695401.tar.gz yuzu-2b06301dbfbfe79687219bf7783a6d1b47695401.tar.bz2 yuzu-2b06301dbfbfe79687219bf7783a6d1b47695401.tar.lz yuzu-2b06301dbfbfe79687219bf7783a6d1b47695401.tar.xz yuzu-2b06301dbfbfe79687219bf7783a6d1b47695401.tar.zst yuzu-2b06301dbfbfe79687219bf7783a6d1b47695401.zip |
Diffstat (limited to 'src/core/file_sys/vfs.cpp')
-rw-r--r-- | src/core/file_sys/vfs.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/core/file_sys/vfs.cpp b/src/core/file_sys/vfs.cpp index 84a6a7397..dae1c16ef 100644 --- a/src/core/file_sys/vfs.cpp +++ b/src/core/file_sys/vfs.cpp @@ -285,6 +285,26 @@ bool ReadOnlyVfsDirectory::Rename(std::string_view name) { return false; } +bool DeepEquals(const VirtualFile& file1, const VirtualFile& file2, size_t block_size) { + if (file1->GetSize() != file2->GetSize()) + return false; + + std::vector<u8> f1_v(block_size); + std::vector<u8> f2_v(block_size); + for (size_t i = 0; i < file1->GetSize(); i += block_size) { + auto f1_vs = file1->Read(f1_v.data(), block_size, i); + auto f2_vs = file2->Read(f2_v.data(), block_size, i); + + if (f1_vs != f2_vs) + return false; + auto iters = std::mismatch(f1_v.begin(), f1_v.end(), f2_v.begin(), f2_v.end()); + if (iters.first != f1_v.end() && iters.second != f2_v.end()) + return false; + } + + return true; +} + bool VfsRawCopy(VirtualFile src, VirtualFile dest) { if (src == nullptr || dest == nullptr) return false; |