diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/file_sys/submission_package.cpp | 27 | ||||
| -rw-r--r-- | src/core/file_sys/submission_package.h | 1 |
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 | ||
| 208 | void 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 | |||
| 215 | void NSP::ReadNCAs(const std::vector<VirtualFile>& files) { | 222 | void 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 | ||
| 61 | private: | 61 | private: |
| 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; |