vfs: Add GetOrCreateDirectoryRelative method
This commit is contained in:
		
							parent
							
								
									ef3768f323
								
							
						
					
					
						commit
						bf33f80fae
					
				@ -6,19 +6,12 @@
 | 
			
		||||
 | 
			
		||||
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>(
 | 
			
		||||
          GetOrCreateDirectory(nand_root, "/system/Contents/registered"))),
 | 
			
		||||
          GetOrCreateDirectoryRelative(nand_root, "/system/Contents/registered"))),
 | 
			
		||||
      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 {
 | 
			
		||||
    return sysnand_cache;
 | 
			
		||||
 | 
			
		||||
@ -462,4 +462,11 @@ bool VfsRawCopy(VirtualFile src, VirtualFile dest) {
 | 
			
		||||
    std::vector<u8> data = src->ReadAllBytes();
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
@ -318,4 +318,8 @@ bool DeepEquals(const VirtualFile& file1, const VirtualFile& file2, size_t block
 | 
			
		||||
// directory of src/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
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user