aboutsummaryrefslogtreecommitdiff
path: root/src/core/file_sys/bis_factory.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-09-25 16:59:44 -0400
committerGitHub <noreply@github.com>2018-09-25 16:59:44 -0400
commit7b81e1e52565ee867c285e2b0c2526f8d4b82581 (patch)
tree718decad5aae4153d8acaa444058914a1c12f147 /src/core/file_sys/bis_factory.cpp
parentb67c1fdf38655638d746b4cb252f16bd298da017 (diff)
parentb3c2ec362bbbdd89da9c0aa84b425717f5e3d351 (diff)
Merge pull request #1365 from DarkLordZach/lfs
file_sys: Add support for LayeredFS mods
Diffstat (limited to 'src/core/file_sys/bis_factory.cpp')
-rw-r--r--src/core/file_sys/bis_factory.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/core/file_sys/bis_factory.cpp b/src/core/file_sys/bis_factory.cpp
index 205492897..6102ef476 100644
--- a/src/core/file_sys/bis_factory.cpp
+++ b/src/core/file_sys/bis_factory.cpp
@@ -2,13 +2,14 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
+#include <fmt/format.h>
#include "core/file_sys/bis_factory.h"
#include "core/file_sys/registered_cache.h"
namespace FileSys {
-BISFactory::BISFactory(VirtualDir nand_root_)
- : nand_root(std::move(nand_root_)),
+BISFactory::BISFactory(VirtualDir nand_root_, VirtualDir load_root_)
+ : nand_root(std::move(nand_root_)), load_root(std::move(load_root_)),
sysnand_cache(std::make_shared<RegisteredCache>(
GetOrCreateDirectoryRelative(nand_root, "/system/Contents/registered"))),
usrnand_cache(std::make_shared<RegisteredCache>(
@@ -24,4 +25,11 @@ std::shared_ptr<RegisteredCache> BISFactory::GetUserNANDContents() const {
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