diff options
| author | 2015-01-06 23:10:13 +0000 | |
|---|---|---|
| committer | 2015-01-15 22:23:08 +0100 | |
| commit | 82ec17db7df53ed1c376d1cdaa9a6587719a546d (patch) | |
| tree | 3c2236849146037fbba2fb75ea8a50f53b847a17 /src/core/loader/elf.cpp | |
| parent | Loader: Don’t assume the file hasn’t been read before. (diff) | |
| download | yuzu-82ec17db7df53ed1c376d1cdaa9a6587719a546d.tar.gz yuzu-82ec17db7df53ed1c376d1cdaa9a6587719a546d.tar.xz yuzu-82ec17db7df53ed1c376d1cdaa9a6587719a546d.zip | |
Loader: Guess filetype from the magic, or fallback to the extension.
Diffstat (limited to 'src/core/loader/elf.cpp')
| -rw-r--r-- | src/core/loader/elf.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/core/loader/elf.cpp b/src/core/loader/elf.cpp index 712d564d1..d1c3aea72 100644 --- a/src/core/loader/elf.cpp +++ b/src/core/loader/elf.cpp | |||
| @@ -330,6 +330,18 @@ bool ElfReader::LoadSymbols() { | |||
| 330 | 330 | ||
| 331 | namespace Loader { | 331 | namespace Loader { |
| 332 | 332 | ||
| 333 | FileType AppLoader_ELF::IdentifyType(FileUtil::IOFile& file) { | ||
| 334 | u32 magic; | ||
| 335 | file.Seek(0, SEEK_SET); | ||
| 336 | if (1 != file.ReadArray<u32>(&magic, 1)) | ||
| 337 | return FileType::Error; | ||
| 338 | |||
| 339 | if (MakeMagic('\x7f', 'E', 'L', 'F') == magic) | ||
| 340 | return FileType::ELF; | ||
| 341 | |||
| 342 | return FileType::Error; | ||
| 343 | } | ||
| 344 | |||
| 333 | ResultStatus AppLoader_ELF::Load() { | 345 | ResultStatus AppLoader_ELF::Load() { |
| 334 | if (is_loaded) | 346 | if (is_loaded) |
| 335 | return ResultStatus::ErrorAlreadyLoaded; | 347 | return ResultStatus::ErrorAlreadyLoaded; |