summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/file_sys/patch_manager.cpp25
-rw-r--r--src/core/file_sys/sdmc_factory.cpp3
-rw-r--r--src/core/hle/service/filesystem/filesystem.cpp3
3 files changed, 10 insertions, 21 deletions
diff --git a/src/core/file_sys/patch_manager.cpp b/src/core/file_sys/patch_manager.cpp
index 6f5aa6da2..13d294ad8 100644
--- a/src/core/file_sys/patch_manager.cpp
+++ b/src/core/file_sys/patch_manager.cpp
@@ -529,26 +529,13 @@ PatchManager::PatchVersionNames PatchManager::GetPatchVersionNames(VirtualFile u
529 } 529 }
530 } 530 }
531 531
532 // SDMC mod directory (LayeredFS) 532 // SDMC mod directory (RomFS LayeredFS)
533 const auto sdmc_mod_dir = fs_controller.GetSDMCModificationLoadRoot(title_id); 533 const auto sdmc_mod_dir = fs_controller.GetSDMCModificationLoadRoot(title_id);
534 if (sdmc_mod_dir != nullptr && sdmc_mod_dir->GetSize() > 0) { 534 if (sdmc_mod_dir != nullptr && sdmc_mod_dir->GetSize() > 0 &&
535 std::string types; 535 IsDirValidAndNonEmpty(FindSubdirectoryCaseless(sdmc_mod_dir, "romfs"))) {
536 536 const auto mod_disabled =
537 const auto exefs_dir = FindSubdirectoryCaseless(sdmc_mod_dir, "exefs"); 537 std::find(disabled.begin(), disabled.end(), "SDMC") != disabled.end();
538 if (IsDirValidAndNonEmpty(exefs_dir)) { 538 out.insert_or_assign(mod_disabled ? "[D] SDMC" : "SDMC", "LayeredFS");
539 bool layeredfs = false;
540
541 if (layeredfs)
542 AppendCommaIfNotEmpty(types, "LayeredExeFS");
543 }
544 if (IsDirValidAndNonEmpty(FindSubdirectoryCaseless(sdmc_mod_dir, "romfs")))
545 AppendCommaIfNotEmpty(types, "LayeredFS");
546
547 if (!types.empty()) {
548 const auto mod_disabled =
549 std::find(disabled.begin(), disabled.end(), "SDMC") != disabled.end();
550 out.insert_or_assign(mod_disabled ? "[D] SDMC" : "SDMC", types);
551 }
552 } 539 }
553 540
554 // DLC 541 // DLC
diff --git a/src/core/file_sys/sdmc_factory.cpp b/src/core/file_sys/sdmc_factory.cpp
index f4dba8f16..7e878123c 100644
--- a/src/core/file_sys/sdmc_factory.cpp
+++ b/src/core/file_sys/sdmc_factory.cpp
@@ -29,8 +29,9 @@ ResultVal<VirtualDir> SDMCFactory::Open() const {
29 29
30VirtualDir SDMCFactory::GetSDMCModificationLoadRoot(u64 title_id) const { 30VirtualDir SDMCFactory::GetSDMCModificationLoadRoot(u64 title_id) const {
31 // LayeredFS doesn't work on updates and title id-less homebrew 31 // LayeredFS doesn't work on updates and title id-less homebrew
32 if (title_id == 0 || (title_id & 0xFFF) == 0x800) 32 if (title_id == 0 || (title_id & 0xFFF) == 0x800) {
33 return nullptr; 33 return nullptr;
34 }
34 return GetOrCreateDirectoryRelative(dir, fmt::format("/atmosphere/contents/{:016X}", title_id)); 35 return GetOrCreateDirectoryRelative(dir, fmt::format("/atmosphere/contents/{:016X}", title_id));
35} 36}
36 37
diff --git a/src/core/hle/service/filesystem/filesystem.cpp b/src/core/hle/service/filesystem/filesystem.cpp
index 9191f19fe..d66e74d3a 100644
--- a/src/core/hle/service/filesystem/filesystem.cpp
+++ b/src/core/hle/service/filesystem/filesystem.cpp
@@ -706,8 +706,9 @@ FileSys::VirtualDir FileSystemController::GetModificationLoadRoot(u64 title_id)
706FileSys::VirtualDir FileSystemController::GetSDMCModificationLoadRoot(u64 title_id) const { 706FileSys::VirtualDir FileSystemController::GetSDMCModificationLoadRoot(u64 title_id) const {
707 LOG_TRACE(Service_FS, "Opening SDMC mod load root for tid={:016X}", title_id); 707 LOG_TRACE(Service_FS, "Opening SDMC mod load root for tid={:016X}", title_id);
708 708
709 if (sdmc_factory == nullptr) 709 if (sdmc_factory == nullptr) {
710 return nullptr; 710 return nullptr;
711 }
711 712
712 return sdmc_factory->GetSDMCModificationLoadRoot(title_id); 713 return sdmc_factory->GetSDMCModificationLoadRoot(title_id);
713} 714}