bis_factory: Create NAND dirs if they don't exist

This commit is contained in:
Zach Hilman 2018-08-10 20:47:25 -04:00
parent f78a6e752f
commit 62e859c6c7
1 changed files with 9 additions and 2 deletions

View File

@ -6,12 +6,19 @@
namespace FileSys { 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_) BISFactory::BISFactory(VirtualDir nand_root_)
: nand_root(std::move(nand_root_)), : nand_root(std::move(nand_root_)),
sysnand_cache(std::make_shared<RegisteredCache>( sysnand_cache(std::make_shared<RegisteredCache>(
nand_root->GetDirectoryRelative("/system/Contents/registered"))), GetOrCreateDirectory(nand_root, "/system/Contents/registered"))),
usrnand_cache(std::make_shared<RegisteredCache>( 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 { std::shared_ptr<RegisteredCache> BISFactory::GetSystemNANDContents() const {
return sysnand_cache; return sysnand_cache;