diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/loader/nax.cpp | 28 | ||||
| -rw-r--r-- | src/core/loader/nax.h | 4 |
2 files changed, 19 insertions, 13 deletions
diff --git a/src/core/loader/nax.cpp b/src/core/loader/nax.cpp index 02a0d5ba7..5d4380684 100644 --- a/src/core/loader/nax.cpp +++ b/src/core/loader/nax.cpp | |||
| @@ -11,16 +11,8 @@ | |||
| 11 | #include "core/loader/nca.h" | 11 | #include "core/loader/nca.h" |
| 12 | 12 | ||
| 13 | namespace Loader { | 13 | namespace Loader { |
| 14 | 14 | namespace { | |
| 15 | AppLoader_NAX::AppLoader_NAX(FileSys::VirtualFile file) | 15 | FileType IdentifyTypeImpl(const FileSys::NAX& nax) { |
| 16 | : AppLoader(file), nax(std::make_unique<FileSys::NAX>(file)), | ||
| 17 | nca_loader(std::make_unique<AppLoader_NCA>(nax->GetDecrypted())) {} | ||
| 18 | |||
| 19 | AppLoader_NAX::~AppLoader_NAX() = default; | ||
| 20 | |||
| 21 | FileType AppLoader_NAX::IdentifyType(const FileSys::VirtualFile& file) { | ||
| 22 | FileSys::NAX nax(file); | ||
| 23 | |||
| 24 | if (nax.GetStatus() != ResultStatus::Success) { | 16 | if (nax.GetStatus() != ResultStatus::Success) { |
| 25 | return FileType::Error; | 17 | return FileType::Error; |
| 26 | } | 18 | } |
| @@ -32,6 +24,22 @@ FileType AppLoader_NAX::IdentifyType(const FileSys::VirtualFile& file) { | |||
| 32 | 24 | ||
| 33 | return FileType::NAX; | 25 | return FileType::NAX; |
| 34 | } | 26 | } |
| 27 | } // Anonymous namespace | ||
| 28 | |||
| 29 | AppLoader_NAX::AppLoader_NAX(FileSys::VirtualFile file) | ||
| 30 | : AppLoader(file), nax(std::make_unique<FileSys::NAX>(file)), | ||
| 31 | nca_loader(std::make_unique<AppLoader_NCA>(nax->GetDecrypted())) {} | ||
| 32 | |||
| 33 | AppLoader_NAX::~AppLoader_NAX() = default; | ||
| 34 | |||
| 35 | FileType AppLoader_NAX::IdentifyType(const FileSys::VirtualFile& file) { | ||
| 36 | const FileSys::NAX nax(file); | ||
| 37 | return IdentifyTypeImpl(nax); | ||
| 38 | } | ||
| 39 | |||
| 40 | FileType AppLoader_NAX::GetFileType() { | ||
| 41 | return IdentifyTypeImpl(*nax); | ||
| 42 | } | ||
| 35 | 43 | ||
| 36 | ResultStatus AppLoader_NAX::Load(Kernel::SharedPtr<Kernel::Process>& process) { | 44 | ResultStatus AppLoader_NAX::Load(Kernel::SharedPtr<Kernel::Process>& process) { |
| 37 | if (is_loaded) { | 45 | if (is_loaded) { |
diff --git a/src/core/loader/nax.h b/src/core/loader/nax.h index 4dbae2918..56605fe45 100644 --- a/src/core/loader/nax.h +++ b/src/core/loader/nax.h | |||
| @@ -31,9 +31,7 @@ public: | |||
| 31 | */ | 31 | */ |
| 32 | static FileType IdentifyType(const FileSys::VirtualFile& file); | 32 | static FileType IdentifyType(const FileSys::VirtualFile& file); |
| 33 | 33 | ||
| 34 | FileType GetFileType() override { | 34 | FileType GetFileType() override; |
| 35 | return IdentifyType(file); | ||
| 36 | } | ||
| 37 | 35 | ||
| 38 | ResultStatus Load(Kernel::SharedPtr<Kernel::Process>& process) override; | 36 | ResultStatus Load(Kernel::SharedPtr<Kernel::Process>& process) override; |
| 39 | 37 | ||