aboutsummaryrefslogtreecommitdiff
path: root/src/core/file_sys/submission_package.cpp
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2018-10-03 01:43:34 -0400
committerLioncash <mathew1800@gmail.com>2018-10-03 01:46:07 -0400
commite4f994749bf6688806b2345b65ec70b26f8d027d (patch)
treec0726d59aec1bf8f887e7b3b466743007d81e79f /src/core/file_sys/submission_package.cpp
parenteb438661e6cf86e516f56db390950d7767126880 (diff)
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/core/file_sys/submission_package.cpp')
-rw-r--r--src/core/file_sys/submission_package.cpp27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/core/file_sys/submission_package.cpp b/src/core/file_sys/submission_package.cpp
index b4d738d94e..5ebae15036 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_)
return;
}
+ const auto files = pfs->GetFiles();
+
if (IsDirectoryExeFS(pfs)) {
extracted = true;
- exefs = pfs;
-
- const auto& files = pfs->GetFiles();
- const auto romfs_iter =
- std::find_if(files.begin(), files.end(), [](const FileSys::VirtualFile& file) {
- return file->GetName().find(".romfs") != std::string::npos;
- });
- if (romfs_iter != files.end())
- romfs = *romfs_iter;
+ InitializeExeFSAndRomFS(files);
return;
}
extracted = false;
- const auto files = pfs->GetFiles();
SetTicketKeys(files);
ReadNCAs(files);
@@ -212,6 +205,20 @@ bool NSP::ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) {
return false;
}
+void NSP::InitializeExeFSAndRomFS(const std::vector<VirtualFile>& files) {
+ exefs = pfs;
+
+ const auto romfs_iter = std::find_if(files.begin(), files.end(), [](const VirtualFile& file) {
+ return file->GetName().find(".romfs") != std::string::npos;
+ });
+
+ if (romfs_iter == files.end()) {
+ return;
+ }
+
+ romfs = *romfs_iter;
+}
+
void NSP::ReadNCAs(const std::vector<VirtualFile>& files) {
for (const auto& outer_file : files) {
if (outer_file->GetName().substr(outer_file->GetName().size() - 9) != ".cnmt.nca") {