| 114 | } |
| 115 | |
| 116 | std::unique_ptr<AppLoader> GetLoader(const std::string& filename) { |
| 117 | FileUtil::IOFile file(filename, "rb"); |
| 118 | if (!file.IsOpen()) { |
| 119 | LOG_ERROR(Loader, "Failed to load file {}", filename); |
| 120 | return nullptr; |
| 121 | } |
| 122 | |
| 123 | std::string filename_filename, filename_extension; |
| 124 | Common::SplitPath(filename, nullptr, &filename_filename, &filename_extension); |
| 125 | |
| 126 | FileType type = IdentifyFile(file); |
| 127 | FileType filename_type = GuessFromExtension(filename_extension); |
| 128 | |
| 129 | if (type != filename_type) { |
| 130 | LOG_WARNING(Loader, "File {} has a different type than its extension.", filename); |
| 131 | if (FileType::Unknown == type) |
| 132 | type = filename_type; |
| 133 | } |
| 134 | |
| 135 | LOG_DEBUG(Loader, "Loading file {} as {}...", filename, GetFileTypeString(type)); |
| 136 | |
| 137 | auto& system = Core::System::GetInstance(); |
| 138 | return GetFileLoader(system, std::move(file), type, filename_filename, filename); |
| 139 | } |
| 140 | |
| 141 | } // namespace Loader |
no test coverage detected