// MassBuilderSaveTool // Copyright (C) 2021-2022 Guillaume Jacquemin // // 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 3 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 . #ifndef SAVETOOL_DEBUG_BUILD #include #endif #include #include #include #include #include #include "SaveTool/SaveTool.h" int main(int argc, char** argv) { auto str = std::setlocale(LC_ALL, ".utf-8"); if(str && !Containers::StringView{str}.hasSuffix(".utf8")) { SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Error", "Your system doesn't support UTF-8.", nullptr); return EXIT_FAILURE; } #ifndef SAVETOOL_DEBUG_BUILD std::ofstream output{"SaveToolLog.txt", std::ios::trunc|std::ios::out}; Utility::Debug d{&output}; Utility::Warning w{&output}; Utility::Error e{&output}; #else Utility::Warning w{Utility::Debug::defaultOutput()}; Utility::Error e{Utility::Debug::defaultOutput()}; #endif Utility::Debug{} << "M.A.S.S. Builder Save Tool version " SAVETOOL_VERSION; auto mutex_handle = CreateMutexW(nullptr, 0, L"MassBuilderSaveTool"); if(!mutex_handle) { SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Error", "There was an error initialising the single-instance checker.",nullptr); return EXIT_FAILURE; } if(GetLastError() == ERROR_ALREADY_EXISTS) { SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Error", "There can be only one running instance of the application.",nullptr); return EXIT_FAILURE; } std::uint32_t brand[12]; if (!__get_cpuid_max(0x80000004, nullptr)) { Utility::Warning{} << "Warning: CPUID features not supported. Can't get the current processor's model."; } else { __get_cpuid(0x80000002, brand+0x0, brand+0x1, brand+0x2, brand+0x3); __get_cpuid(0x80000003, brand+0x4, brand+0x5, brand+0x6, brand+0x7); __get_cpuid(0x80000004, brand+0x8, brand+0x9, brand+0xa, brand+0xb); Utility::Debug{} << "Processor:" << Containers::arrayCast(brand).data(); } SaveTool app({argc, argv}); Int result = app.exec(); ReleaseMutex(mutex_handle); return result; }