vfs: Add GetOrCreateDirectoryRelative method
This commit is contained in:
parent
ef3768f323
commit
bf33f80fae
|
@ -6,19 +6,12 @@
|
||||||
|
|
||||||
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>(
|
||||||
GetOrCreateDirectory(nand_root, "/system/Contents/registered"))),
|
GetOrCreateDirectoryRelative(nand_root, "/system/Contents/registered"))),
|
||||||
usrnand_cache(std::make_shared<RegisteredCache>(
|
usrnand_cache(std::make_shared<RegisteredCache>(
|
||||||
GetOrCreateDirectory(nand_root, "/user/Contents/registered"))) {}
|
GetOrCreateDirectoryRelative(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;
|
||||||
|
|
|
@ -462,4 +462,11 @@ bool VfsRawCopy(VirtualFile src, VirtualFile dest) {
|
||||||
std::vector<u8> data = src->ReadAllBytes();
|
std::vector<u8> data = src->ReadAllBytes();
|
||||||
return dest->WriteBytes(data, 0) == data.size();
|
return dest->WriteBytes(data, 0) == data.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VirtualDir GetOrCreateDirectoryRelative(const VirtualDir& rel, std::string_view path) {
|
||||||
|
const auto res = rel->GetDirectoryRelative(path);
|
||||||
|
if (res == nullptr)
|
||||||
|
return rel->CreateDirectoryRelative(path);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
} // namespace FileSys
|
} // namespace FileSys
|
||||||
|
|
|
@ -318,4 +318,8 @@ bool DeepEquals(const VirtualFile& file1, const VirtualFile& file2, size_t block
|
||||||
// directory of src/dest.
|
// directory of src/dest.
|
||||||
bool VfsRawCopy(VirtualFile src, VirtualFile dest);
|
bool VfsRawCopy(VirtualFile src, VirtualFile dest);
|
||||||
|
|
||||||
|
// Checks if the directory at path relative to rel exists. If it does, returns that. If it does not
|
||||||
|
// it attempts to create it and returns the new dir or nullptr on failure.
|
||||||
|
VirtualDir GetOrCreateDirectoryRelative(const VirtualDir& rel, std::string_view path);
|
||||||
|
|
||||||
} // namespace FileSys
|
} // namespace FileSys
|
||||||
|
|
Reference in New Issue