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