diff options
| author | 2018-08-04 14:33:11 -0400 | |
|---|---|---|
| committer | 2018-08-04 14:33:11 -0400 | |
| 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.gz yuzu-2b06301dbfbfe79687219bf7783a6d1b47695401.tar.xz yuzu-2b06301dbfbfe79687219bf7783a6d1b47695401.zip | |
Merge pull request #849 from DarkLordZach/xci
XCI and Encrypted NCA Support
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) { | |||
| 285 | return false; | 285 | return false; |
| 286 | } | 286 | } |
| 287 | 287 | ||
| 288 | bool DeepEquals(const VirtualFile& file1, const VirtualFile& file2, size_t block_size) { | ||
| 289 | if (file1->GetSize() != file2->GetSize()) | ||
| 290 | return false; | ||
| 291 | |||
| 292 | std::vector<u8> f1_v(block_size); | ||
| 293 | std::vector<u8> f2_v(block_size); | ||
| 294 | for (size_t i = 0; i < file1->GetSize(); i += block_size) { | ||
| 295 | auto f1_vs = file1->Read(f1_v.data(), block_size, i); | ||
| 296 | auto f2_vs = file2->Read(f2_v.data(), block_size, i); | ||
| 297 | |||
| 298 | if (f1_vs != f2_vs) | ||
| 299 | return false; | ||
| 300 | auto iters = std::mismatch(f1_v.begin(), f1_v.end(), f2_v.begin(), f2_v.end()); | ||
| 301 | if (iters.first != f1_v.end() && iters.second != f2_v.end()) | ||
| 302 | return false; | ||
| 303 | } | ||
| 304 | |||
| 305 | return true; | ||
| 306 | } | ||
| 307 | |||
| 288 | bool VfsRawCopy(VirtualFile src, VirtualFile dest) { | 308 | bool VfsRawCopy(VirtualFile src, VirtualFile dest) { |
| 289 | if (src == nullptr || dest == nullptr) | 309 | if (src == nullptr || dest == nullptr) |
| 290 | return false; | 310 | return false; |