/* * Copyright (C) 2008-2017 TrinityCore * Copyright (C) 2005-2011 MaNGOS * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #define _CRT_SECURE_NO_DEPRECATE #include "loadlib.h" #include u_map_fcc MverMagic = { {'R','E','V','M'} }; FileLoader::FileLoader() { data = 0; data_size = 0; version = 0; } FileLoader::~FileLoader() { free(); } bool FileLoader::loadFile(HANDLE mpq, char* filename, bool log) { free(); HANDLE file; if (!SFileOpenFileEx(mpq, filename, SFILE_OPEN_PATCHED_FILE, &file)) { if (log) printf("No such file %s\n", filename); return false; } data_size = SFileGetFileSize(file, NULL); data = new uint8[data_size]; SFileReadFile(file, data, data_size, NULL/*bytesRead*/, NULL); if (prepareLoadedData()) { SFileCloseFile(file); return true; } printf("Error loading %s\n", filename); SFileCloseFile(file); free(); return false; } bool FileLoader::prepareLoadedData() { // Check version version = (file_MVER *) data; if (version->fcc != MverMagic.fcc) return false; if (version->ver != FILE_FORMAT_VERSION) return false; return true; } void FileLoader::free() { if (data) delete[] data; data = 0; data_size = 0; version = 0; }