mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-12-23 17:00:57 +01:00
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.
This commit is contained in:
parent
fd312abedd
commit
ccf0a9cb38
2 changed files with 18 additions and 10 deletions
|
@ -53,22 +53,15 @@ NSP::NSP(VirtualFile file_)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const auto files = pfs->GetFiles();
|
||||||
|
|
||||||
if (IsDirectoryExeFS(pfs)) {
|
if (IsDirectoryExeFS(pfs)) {
|
||||||
extracted = true;
|
extracted = true;
|
||||||
exefs = pfs;
|
InitializeExeFSAndRomFS(files);
|
||||||
|
|
||||||
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;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
extracted = false;
|
extracted = false;
|
||||||
const auto files = pfs->GetFiles();
|
|
||||||
|
|
||||||
SetTicketKeys(files);
|
SetTicketKeys(files);
|
||||||
ReadNCAs(files);
|
ReadNCAs(files);
|
||||||
|
@ -212,6 +205,20 @@ bool NSP::ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) {
|
||||||
return false;
|
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) {
|
void NSP::ReadNCAs(const std::vector<VirtualFile>& files) {
|
||||||
for (const auto& outer_file : files) {
|
for (const auto& outer_file : files) {
|
||||||
if (outer_file->GetName().substr(outer_file->GetName().size() - 9) != ".cnmt.nca") {
|
if (outer_file->GetName().substr(outer_file->GetName().size() - 9) != ".cnmt.nca") {
|
||||||
|
|
|
@ -59,6 +59,7 @@ protected:
|
||||||
bool ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) override;
|
bool ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void InitializeExeFSAndRomFS(const std::vector<VirtualFile>& files);
|
||||||
void ReadNCAs(const std::vector<VirtualFile>& files);
|
void ReadNCAs(const std::vector<VirtualFile>& files);
|
||||||
|
|
||||||
VirtualFile file;
|
VirtualFile file;
|
||||||
|
|
Loading…
Reference in a new issue