summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Lioncash2018-10-03 01:43:34 -0400
committerGravatar Lioncash2018-10-03 01:46:07 -0400
commitccf0a9cb381cad75878c79b962ac61ded0466d08 (patch)
treec0726d59aec1bf8f887e7b3b466743007d81e79f /src
parentsubmission_package: Move NCA reading code to its own function (diff)
downloadyuzu-ccf0a9cb381cad75878c79b962ac61ded0466d08.tar.gz
yuzu-ccf0a9cb381cad75878c79b962ac61ded0466d08.tar.xz
yuzu-ccf0a9cb381cad75878c79b962ac61ded0466d08.zip
submission_package: Move ExeFS and RomFS initialization to its own function
Like the other two bits of factored out code, this can also be put within its own function. We can also modify the code so that it accepts a const reference to a std::vector of files, this way, we can deduplicate the file retrieval. Now the constructor for NSP isn't a combination of multiple behaviors in one spot. It's nice and separate.
Diffstat (limited to 'src')
-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;