diff options
| author | Zach Hilman <zachhilman@gmail.com> | 2018-09-19 22:04:15 -0400 | 
|---|---|---|
| committer | Zach Hilman <zachhilman@gmail.com> | 2018-09-21 19:53:33 -0400 | 
| commit | 940a711caf12f15b9b30d0119fa6466c81091479 (patch) | |
| tree | 69ffef4889ae058b01a2be65221d60bf4b0eaaa5 /src/core | |
| parent | 50a470eab8a409901250d2d3cca5399e9c243f59 (diff) | |
filesystem: Add LayeredFS VFS directory getter
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/hle/service/filesystem/filesystem.cpp | 13 | ||||
| -rw-r--r-- | src/core/hle/service/filesystem/filesystem.h | 2 | 
2 files changed, 14 insertions, 1 deletions
| diff --git a/src/core/hle/service/filesystem/filesystem.cpp b/src/core/hle/service/filesystem/filesystem.cpp index d349ee686..aed2abb71 100644 --- a/src/core/hle/service/filesystem/filesystem.cpp +++ b/src/core/hle/service/filesystem/filesystem.cpp @@ -343,6 +343,15 @@ std::shared_ptr<FileSys::RegisteredCache> GetSDMCContents() {      return sdmc_factory->GetSDMCContents();  } +FileSys::VirtualDir GetModificationLoadRoot(u64 title_id) { +    LOG_TRACE(Service_FS, "Opening mod load root for tid={:016X}", title_id); + +    if (bis_factory == nullptr) +        return nullptr; + +    return bis_factory->GetModificationLoadRoot(title_id); +} +  void CreateFactories(const FileSys::VirtualFilesystem& vfs, bool overwrite) {      if (overwrite) {          bis_factory = nullptr; @@ -354,9 +363,11 @@ void CreateFactories(const FileSys::VirtualFilesystem& vfs, bool overwrite) {                                               FileSys::Mode::ReadWrite);      auto sd_directory = vfs->OpenDirectory(FileUtil::GetUserPath(FileUtil::UserPath::SDMCDir),                                             FileSys::Mode::ReadWrite); +    auto load_directory = vfs->OpenDirectory(FileUtil::GetUserPath(FileUtil::UserPath::LoadDir), +                                             FileSys::Mode::ReadWrite);      if (bis_factory == nullptr) -        bis_factory = std::make_unique<FileSys::BISFactory>(nand_directory); +        bis_factory = std::make_unique<FileSys::BISFactory>(nand_directory, load_directory);      if (save_data_factory == nullptr)          save_data_factory = std::make_unique<FileSys::SaveDataFactory>(std::move(nand_directory));      if (sdmc_factory == nullptr) diff --git a/src/core/hle/service/filesystem/filesystem.h b/src/core/hle/service/filesystem/filesystem.h index aab65a2b8..7039a2247 100644 --- a/src/core/hle/service/filesystem/filesystem.h +++ b/src/core/hle/service/filesystem/filesystem.h @@ -52,6 +52,8 @@ std::shared_ptr<FileSys::RegisteredCache> GetSystemNANDContents();  std::shared_ptr<FileSys::RegisteredCache> GetUserNANDContents();  std::shared_ptr<FileSys::RegisteredCache> GetSDMCContents(); +FileSys::VirtualDir GetModificationLoadRoot(u64 title_id); +  // Creates the SaveData, SDMC, and BIS Factories. Should be called once and before any function  // above is called.  void CreateFactories(const FileSys::VirtualFilesystem& vfs, bool overwrite = true); | 
