diff options
| author | 2018-08-16 17:05:30 -0400 | |
|---|---|---|
| committer | 2018-08-23 11:52:44 -0400 | |
| commit | bf33f80fae1e97f48a62e16b1e965d7994ac4c45 (patch) | |
| tree | c5bf8e27201430b922fb793e6293f78346a97bdf /src | |
| parent | filesystem: Add CreateFactories methods to fs (diff) | |
| download | yuzu-bf33f80fae1e97f48a62e16b1e965d7994ac4c45.tar.gz yuzu-bf33f80fae1e97f48a62e16b1e965d7994ac4c45.tar.xz yuzu-bf33f80fae1e97f48a62e16b1e965d7994ac4c45.zip | |
vfs: Add GetOrCreateDirectoryRelative method
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/file_sys/bis_factory.cpp | 11 | ||||
| -rw-r--r-- | src/core/file_sys/vfs.cpp | 7 | ||||
| -rw-r--r-- | src/core/file_sys/vfs.h | 4 |
3 files changed, 13 insertions, 9 deletions
diff --git a/src/core/file_sys/bis_factory.cpp b/src/core/file_sys/bis_factory.cpp index ae4e33800..08a7cea5a 100644 --- a/src/core/file_sys/bis_factory.cpp +++ b/src/core/file_sys/bis_factory.cpp | |||
| @@ -6,19 +6,12 @@ | |||
| 6 | 6 | ||
| 7 | namespace FileSys { | 7 | namespace FileSys { |
| 8 | 8 | ||
| 9 | static VirtualDir GetOrCreateDirectory(const VirtualDir& dir, std::string_view path) { | ||
| 10 | const auto res = dir->GetDirectoryRelative(path); | ||
| 11 | if (res == nullptr) | ||
| 12 | return dir->CreateDirectoryRelative(path); | ||
| 13 | return res; | ||
| 14 | } | ||
| 15 | |||
| 16 | BISFactory::BISFactory(VirtualDir nand_root_) | 9 | BISFactory::BISFactory(VirtualDir nand_root_) |
| 17 | : nand_root(std::move(nand_root_)), | 10 | : nand_root(std::move(nand_root_)), |
| 18 | sysnand_cache(std::make_shared<RegisteredCache>( | 11 | sysnand_cache(std::make_shared<RegisteredCache>( |
| 19 | GetOrCreateDirectory(nand_root, "/system/Contents/registered"))), | 12 | GetOrCreateDirectoryRelative(nand_root, "/system/Contents/registered"))), |
| 20 | usrnand_cache(std::make_shared<RegisteredCache>( | 13 | usrnand_cache(std::make_shared<RegisteredCache>( |
| 21 | GetOrCreateDirectory(nand_root, "/user/Contents/registered"))) {} | 14 | GetOrCreateDirectoryRelative(nand_root, "/user/Contents/registered"))) {} |
| 22 | 15 | ||
| 23 | std::shared_ptr<RegisteredCache> BISFactory::GetSystemNANDContents() const { | 16 | std::shared_ptr<RegisteredCache> BISFactory::GetSystemNANDContents() const { |
| 24 | return sysnand_cache; | 17 | return sysnand_cache; |
diff --git a/src/core/file_sys/vfs.cpp b/src/core/file_sys/vfs.cpp index b915b4c11..146c839f4 100644 --- a/src/core/file_sys/vfs.cpp +++ b/src/core/file_sys/vfs.cpp | |||
| @@ -462,4 +462,11 @@ bool VfsRawCopy(VirtualFile src, VirtualFile dest) { | |||
| 462 | std::vector<u8> data = src->ReadAllBytes(); | 462 | std::vector<u8> data = src->ReadAllBytes(); |
| 463 | return dest->WriteBytes(data, 0) == data.size(); | 463 | return dest->WriteBytes(data, 0) == data.size(); |
| 464 | } | 464 | } |
| 465 | |||
| 466 | VirtualDir GetOrCreateDirectoryRelative(const VirtualDir& rel, std::string_view path) { | ||
| 467 | const auto res = rel->GetDirectoryRelative(path); | ||
| 468 | if (res == nullptr) | ||
| 469 | return rel->CreateDirectoryRelative(path); | ||
| 470 | return res; | ||
| 471 | } | ||
| 465 | } // namespace FileSys | 472 | } // namespace FileSys |
diff --git a/src/core/file_sys/vfs.h b/src/core/file_sys/vfs.h index 22db08b59..5142a3e86 100644 --- a/src/core/file_sys/vfs.h +++ b/src/core/file_sys/vfs.h | |||
| @@ -318,4 +318,8 @@ bool DeepEquals(const VirtualFile& file1, const VirtualFile& file2, size_t block | |||
| 318 | // directory of src/dest. | 318 | // directory of src/dest. |
| 319 | bool VfsRawCopy(VirtualFile src, VirtualFile dest); | 319 | bool VfsRawCopy(VirtualFile src, VirtualFile dest); |
| 320 | 320 | ||
| 321 | // Checks if the directory at path relative to rel exists. If it does, returns that. If it does not | ||
| 322 | // it attempts to create it and returns the new dir or nullptr on failure. | ||
| 323 | VirtualDir GetOrCreateDirectoryRelative(const VirtualDir& rel, std::string_view path); | ||
| 324 | |||
| 321 | } // namespace FileSys | 325 | } // namespace FileSys |