Browse Source

bis_factory: Create NAND dirs if they don't exist

Zach Hilman 8 years ago
parent
commit
62e859c6c7
1 changed files with 9 additions and 2 deletions
  1. 9 2
      src/core/file_sys/bis_factory.cpp

+ 9 - 2
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;