Skip to content
Snippets Groups Projects
Commit bba12520 authored by archshift's avatar archshift
Browse files

Expose loader helper functions for identifying files.

parent b3af7aad
No related branches found
No related tags found
No related merge requests found
......@@ -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";
......
......@@ -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,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment