summaryrefslogtreecommitdiffstats
path: root/src/frontend_common/content_manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend_common/content_manager.h')
-rw-r--r--src/frontend_common/content_manager.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/frontend_common/content_manager.h b/src/frontend_common/content_manager.h
index 8e55f4ca0..248ce573e 100644
--- a/src/frontend_common/content_manager.h
+++ b/src/frontend_common/content_manager.h
@@ -65,6 +65,23 @@ inline bool RemoveBaseContent(const Service::FileSystem::FileSystemController& f
fs_controller.GetSDMCContents()->RemoveExistingEntry(program_id);
}
+inline bool RemoveMod(const Service::FileSystem::FileSystemController& fs_controller,
+ const u64 program_id, const std::string& mod_name) {
+ // Check general Mods (LayeredFS and IPS)
+ const auto mod_dir = fs_controller.GetModificationLoadRoot(program_id);
+ if (mod_dir != nullptr) {
+ return mod_dir->DeleteSubdirectoryRecursive(mod_name);
+ }
+
+ // Check SDMC mod directory (RomFS LayeredFS)
+ const auto sdmc_mod_dir = fs_controller.GetSDMCModificationLoadRoot(program_id);
+ if (sdmc_mod_dir != nullptr) {
+ return sdmc_mod_dir->DeleteSubdirectoryRecursive(mod_name);
+ }
+
+ return false;
+}
+
inline InstallResult InstallNSP(
Core::System* system, FileSys::VfsFilesystem* vfs, const std::string& filename,
const std::function<bool(size_t, size_t)>& callback = std::function<bool(size_t, size_t)>()) {