aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorZach Hilman <zachhilman@gmail.com>2018-08-10 20:47:25 -0400
committerZach Hilman <zachhilman@gmail.com>2018-08-11 22:50:48 -0400
commit2a0b80bb67f64c67abbfc1674f9bd62727879d0c (patch)
treea52fe5006411708181ccb0ec92000c8702b552bf /src
parent54fd907b2b908a0c9ccf79444c7394d2a5dbbd16 (diff)
bis_factory: Create NAND dirs if they don't exist
Diffstat (limited to 'src')
-rw-r--r--src/core/file_sys/bis_factory.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/core/file_sys/bis_factory.cpp b/src/core/file_sys/bis_factory.cpp
index 7d0de733b7..ae4e338003 100644
--- a/src/core/file_sys/bis_factory.cpp
+++ b/src/core/file_sys/bis_factory.cpp
@@ -6,12 +6,19 @@
namespace FileSys {
+static VirtualDir GetOrCreateDirectory(const VirtualDir& dir, std::string_view path) {
+ const auto res = dir->GetDirectoryRelative(path);
+ if (res == nullptr)
+ return dir->CreateDirectoryRelative(path);
+ return res;
+}
+
BISFactory::BISFactory(VirtualDir nand_root_)
: nand_root(std::move(nand_root_)),
sysnand_cache(std::make_shared<RegisteredCache>(
- nand_root->GetDirectoryRelative("/system/Contents/registered"))),
+ GetOrCreateDirectory(nand_root, "/system/Contents/registered"))),
usrnand_cache(std::make_shared<RegisteredCache>(
- nand_root->GetDirectoryRelative("/user/Contents/registered"))) {}
+ GetOrCreateDirectory(nand_root, "/user/Contents/registered"))) {}
std::shared_ptr<RegisteredCache> BISFactory::GetSystemNANDContents() const {
return sysnand_cache;