diff options
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> | 2015-01-06 23:10:13 +0000 |
---|---|---|
committer | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> | 2015-01-15 22:23:08 +0100 |
commit | 82ec17db7df53ed1c376d1cdaa9a6587719a546d (patch) | |
tree | 3c2236849146037fbba2fb75ea8a50f53b847a17 /src/core/loader/elf.cpp | |
parent | 04622a859cc748745cbbeb0b332f930085438077 (diff) |
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 712d564d12..d1c3aea720 100644 --- a/src/core/loader/elf.cpp +++ b/src/core/loader/elf.cpp @@ -330,6 +330,18 @@ bool ElfReader::LoadSymbols() { namespace Loader { +FileType AppLoader_ELF::IdentifyType(FileUtil::IOFile& file) { + u32 magic; + file.Seek(0, SEEK_SET); + if (1 != file.ReadArray<u32>(&magic, 1)) + return FileType::Error; + + if (MakeMagic('\x7f', 'E', 'L', 'F') == magic) + return FileType::ELF; + + return FileType::Error; +} + ResultStatus AppLoader_ELF::Load() { if (is_loaded) return ResultStatus::ErrorAlreadyLoaded; |