summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/file_sys/submission_package.cpp27
-rw-r--r--src/core/file_sys/submission_package.h1
2 files changed, 18 insertions, 10 deletions
diff --git a/src/core/file_sys/submission_package.cpp b/src/core/file_sys/submission_package.cpp
index b4d738d94..5ebae1503 100644
--- a/src/core/file_sys/submission_package.cpp
+++ b/src/core/file_sys/submission_package.cpp
@@ -53,22 +53,15 @@ NSP::NSP(VirtualFile file_)
53 return; 53 return;
54 } 54 }
55 55
56 const auto files = pfs->GetFiles();
57
56 if (IsDirectoryExeFS(pfs)) { 58 if (IsDirectoryExeFS(pfs)) {
57 extracted = true; 59 extracted = true;
58 exefs = pfs; 60 InitializeExeFSAndRomFS(files);
59
60 const auto& files = pfs->GetFiles();
61 const auto romfs_iter =
62 std::find_if(files.begin(), files.end(), [](const FileSys::VirtualFile& file) {
63 return file->GetName().find(".romfs") != std::string::npos;
64 });
65 if (romfs_iter != files.end())
66 romfs = *romfs_iter;
67 return; 61 return;
68 } 62 }
69 63
70 extracted = false; 64 extracted = false;
71 const auto files = pfs->GetFiles();
72 65
73 SetTicketKeys(files); 66 SetTicketKeys(files);
74 ReadNCAs(files); 67 ReadNCAs(files);
@@ -212,6 +205,20 @@ bool NSP::ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) {
212 return false; 205 return false;
213} 206}
214 207
208void NSP::InitializeExeFSAndRomFS(const std::vector<VirtualFile>& files) {
209 exefs = pfs;
210
211 const auto romfs_iter = std::find_if(files.begin(), files.end(), [](const VirtualFile& file) {
212 return file->GetName().find(".romfs") != std::string::npos;
213 });
214
215 if (romfs_iter == files.end()) {
216 return;
217 }
218
219 romfs = *romfs_iter;
220}
221
215void NSP::ReadNCAs(const std::vector<VirtualFile>& files) { 222void NSP::ReadNCAs(const std::vector<VirtualFile>& files) {
216 for (const auto& outer_file : files) { 223 for (const auto& outer_file : files) {
217 if (outer_file->GetName().substr(outer_file->GetName().size() - 9) != ".cnmt.nca") { 224 if (outer_file->GetName().substr(outer_file->GetName().size() - 9) != ".cnmt.nca") {
diff --git a/src/core/file_sys/submission_package.h b/src/core/file_sys/submission_package.h
index 7c7cebf33..297821522 100644
--- a/src/core/file_sys/submission_package.h
+++ b/src/core/file_sys/submission_package.h
@@ -59,6 +59,7 @@ protected:
59 bool ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) override; 59 bool ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) override;
60 60
61private: 61private:
62 void InitializeExeFSAndRomFS(const std::vector<VirtualFile>& files);
62 void ReadNCAs(const std::vector<VirtualFile>& files); 63 void ReadNCAs(const std::vector<VirtualFile>& files);
63 64
64 VirtualFile file; 65 VirtualFile file;