forked from suyu/suyu
bis_factory: Add mod directory VFS getter
This commit is contained in:
parent
16188acb50
commit
50a470eab8
3 changed files with 18 additions and 3 deletions
|
@ -32,6 +32,8 @@ add_library(core STATIC
|
||||||
file_sys/control_metadata.h
|
file_sys/control_metadata.h
|
||||||
file_sys/directory.h
|
file_sys/directory.h
|
||||||
file_sys/errors.h
|
file_sys/errors.h
|
||||||
|
file_sys/fsmitm_romfsbuild.cpp
|
||||||
|
file_sys/fsmitm_romfsbuild.hpp
|
||||||
file_sys/mode.h
|
file_sys/mode.h
|
||||||
file_sys/nca_metadata.cpp
|
file_sys/nca_metadata.cpp
|
||||||
file_sys/nca_metadata.h
|
file_sys/nca_metadata.h
|
||||||
|
@ -59,6 +61,8 @@ add_library(core STATIC
|
||||||
file_sys/vfs.h
|
file_sys/vfs.h
|
||||||
file_sys/vfs_concat.cpp
|
file_sys/vfs_concat.cpp
|
||||||
file_sys/vfs_concat.h
|
file_sys/vfs_concat.h
|
||||||
|
file_sys/vfs_layered.cpp
|
||||||
|
file_sys/vfs_layered.h
|
||||||
file_sys/vfs_offset.cpp
|
file_sys/vfs_offset.cpp
|
||||||
file_sys/vfs_offset.h
|
file_sys/vfs_offset.h
|
||||||
file_sys/vfs_real.cpp
|
file_sys/vfs_real.cpp
|
||||||
|
|
|
@ -4,11 +4,12 @@
|
||||||
|
|
||||||
#include "core/file_sys/bis_factory.h"
|
#include "core/file_sys/bis_factory.h"
|
||||||
#include "core/file_sys/registered_cache.h"
|
#include "core/file_sys/registered_cache.h"
|
||||||
|
#include "fmt/format.h"
|
||||||
|
|
||||||
namespace FileSys {
|
namespace FileSys {
|
||||||
|
|
||||||
BISFactory::BISFactory(VirtualDir nand_root_)
|
BISFactory::BISFactory(VirtualDir nand_root_, VirtualDir load_root_)
|
||||||
: nand_root(std::move(nand_root_)),
|
: nand_root(std::move(nand_root_)), load_root(std::move(load_root_)),
|
||||||
sysnand_cache(std::make_shared<RegisteredCache>(
|
sysnand_cache(std::make_shared<RegisteredCache>(
|
||||||
GetOrCreateDirectoryRelative(nand_root, "/system/Contents/registered"))),
|
GetOrCreateDirectoryRelative(nand_root, "/system/Contents/registered"))),
|
||||||
usrnand_cache(std::make_shared<RegisteredCache>(
|
usrnand_cache(std::make_shared<RegisteredCache>(
|
||||||
|
@ -24,4 +25,11 @@ std::shared_ptr<RegisteredCache> BISFactory::GetUserNANDContents() const {
|
||||||
return usrnand_cache;
|
return usrnand_cache;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VirtualDir BISFactory::GetModificationLoadRoot(u64 title_id) const {
|
||||||
|
// LayeredFS doesn't work on updates and title id-less homebrew
|
||||||
|
if (title_id == 0 || (title_id & 0x800) > 0)
|
||||||
|
return nullptr;
|
||||||
|
return GetOrCreateDirectoryRelative(load_root, fmt::format("/{:016X}", title_id));
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace FileSys
|
} // namespace FileSys
|
||||||
|
|
|
@ -17,14 +17,17 @@ class RegisteredCache;
|
||||||
/// registered caches.
|
/// registered caches.
|
||||||
class BISFactory {
|
class BISFactory {
|
||||||
public:
|
public:
|
||||||
explicit BISFactory(VirtualDir nand_root);
|
BISFactory(VirtualDir nand_root, VirtualDir load_root);
|
||||||
~BISFactory();
|
~BISFactory();
|
||||||
|
|
||||||
std::shared_ptr<RegisteredCache> GetSystemNANDContents() const;
|
std::shared_ptr<RegisteredCache> GetSystemNANDContents() const;
|
||||||
std::shared_ptr<RegisteredCache> GetUserNANDContents() const;
|
std::shared_ptr<RegisteredCache> GetUserNANDContents() const;
|
||||||
|
|
||||||
|
VirtualDir GetModificationLoadRoot(u64 title_id) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
VirtualDir nand_root;
|
VirtualDir nand_root;
|
||||||
|
VirtualDir load_root;
|
||||||
|
|
||||||
std::shared_ptr<RegisteredCache> sysnand_cache;
|
std::shared_ptr<RegisteredCache> sysnand_cache;
|
||||||
std::shared_ptr<RegisteredCache> usrnand_cache;
|
std::shared_ptr<RegisteredCache> usrnand_cache;
|
||||||
|
|
Loading…
Reference in a new issue