Expose loader helper functions for identifying files.

This commit is contained in:
archshift 2015-08-31 18:28:37 -07:00
parent b3af7aad9e
commit bba12520c4
2 changed files with 41 additions and 13 deletions

View file

@ -26,12 +26,7 @@ const std::initializer_list<Kernel::AddressMapping> default_address_mappings = {
{ 0x1F000000, 0x600000, false }, // entire VRAM
};
/**
* Identifies the type of a bootable file
* @param file open file
* @return FileType of file
*/
static FileType IdentifyFile(FileUtil::IOFile& file) {
FileType IdentifyFile(FileUtil::IOFile& file) {
FileType type;
#define CHECK_TYPE(loader) \
@ -48,12 +43,17 @@ static FileType IdentifyFile(FileUtil::IOFile& file) {
return FileType::Unknown;
}
/**
* Guess the type of a bootable file from its extension
* @param extension_ String extension of bootable file
* @return FileType of file
*/
static FileType GuessFromExtension(const std::string& extension_) {
FileType IdentifyFile(const std::string& file_name) {
FileUtil::IOFile file(file_name, "rb");
if (!file.IsOpen()) {
LOG_ERROR(Loader, "Failed to load file %s", file_name.c_str());
return FileType::Unknown;
}
return IdentifyFile(file);
}
FileType GuessFromExtension(const std::string& extension_) {
std::string extension = Common::ToLower(extension_);
if (extension == ".elf" || extension == ".axf")
@ -71,7 +71,7 @@ static FileType GuessFromExtension(const std::string& extension_) {
return FileType::Unknown;
}
static const char* GetFileTypeString(FileType type) {
const char* GetFileTypeString(FileType type) {
switch (type) {
case FileType::CCI:
return "NCSD";

View file

@ -33,6 +33,34 @@ enum class FileType {
THREEDSX, //3DSX
};
/**
* Identifies the type of a bootable file based on the magic value in its header.
* @param file open file
* @return FileType of file
*/
FileType IdentifyFile(FileUtil::IOFile& file);
/**
* Identifies the type of a bootable file based on the magic value in its header.
* @param file_name path to file
* @return FileType of file. Note: this will return FileType::Unknown if it is unable to determine
* a filetype, and will never return FileType::Error.
*/
FileType IdentifyFile(const std::string& file_name);
/**
* Guess the type of a bootable file from its extension
* @param extension String extension of bootable file
* @return FileType of file. Note: this will return FileType::Unknown if it is unable to determine
* a filetype, and will never return FileType::Error.
*/
FileType GuessFromExtension(const std::string& extension_);
/**
* Convert a FileType into a string which can be displayed to the user.
*/
const char* GetFileTypeString(FileType type);
/// Return type for functions in Loader namespace
enum class ResultStatus {
Success,