diff --git a/include/Utils.h b/include/Utils.h index bd110ca..b7def4a 100644 --- a/include/Utils.h +++ b/include/Utils.h @@ -21,12 +21,14 @@ #define beammp_fs_string std::wstring #define beammp_fs_char wchar_t #define beammp_wide(str) L##str +#define beammp_stdout std::wcout #define WIN32_LEAN_AND_MEAN #include #else #define beammp_fs_string std::string #define beammp_fs_char char #define beammp_wide(str) str +#define beammp_stdout std::cout #endif namespace Utils { diff --git a/src/Logger.cpp b/src/Logger.cpp index 33215fb..771d07d 100644 --- a/src/Logger.cpp +++ b/src/Logger.cpp @@ -57,36 +57,36 @@ void addToLog(const std::wstring& Line) { } void info(const std::string& toPrint) { std::string Print = getDate() + "[INFO] " + toPrint + "\n"; - std::cout << Print; + beammp_stdout << Utils::ToWString(Print); addToLog(Print); } void debug(const std::string& toPrint) { std::string Print = getDate() + "[DEBUG] " + toPrint + "\n"; if (options.verbose) { - std::cout << Print; + beammp_stdout << Utils::ToWString(Print); } addToLog(Print); } void warn(const std::string& toPrint) { std::string Print = getDate() + "[WARN] " + toPrint + "\n"; - std::cout << Print; + beammp_stdout << Utils::ToWString(Print); addToLog(Print); } void error(const std::string& toPrint) { std::string Print = getDate() + "[ERROR] " + toPrint + "\n"; - std::cout << Print; + beammp_stdout << Utils::ToWString(Print); addToLog(Print); } void fatal(const std::string& toPrint) { std::string Print = getDate() + "[FATAL] " + toPrint + "\n"; - std::cout << Print; + beammp_stdout << Utils::ToWString(Print); addToLog(Print); std::this_thread::sleep_for(std::chrono::seconds(5)); std::exit(1); } void except(const std::string& toPrint) { std::string Print = getDate() + "[EXCEP] " + toPrint + "\n"; - std::cout << Print; + beammp_stdout << Utils::ToWString(Print); addToLog(Print); } diff --git a/src/Security/BeamNG.cpp b/src/Security/BeamNG.cpp index 58167b7..19f5524 100644 --- a/src/Security/BeamNG.cpp +++ b/src/Security/BeamNG.cpp @@ -177,6 +177,10 @@ void LegitimacyCheck() { std::string contents((std::istreambuf_iterator(beamngIni)), std::istreambuf_iterator()); beamngIni.close(); + if (contents.size() >= 3 && (unsigned char)contents[0] == 0xEF && (unsigned char)contents[1] == 0xBB && (unsigned char)contents[2] == 0xBF) { + contents = contents.substr(3); + } + auto ini = Utils::ParseINI(contents); if (ini.empty()) lowExit(3); diff --git a/src/Startup.cpp b/src/Startup.cpp index ec6a592..2ccb89b 100644 --- a/src/Startup.cpp +++ b/src/Startup.cpp @@ -269,6 +269,8 @@ void LinuxPatch() { void InitLauncher() { SetConsoleTitleA(("BeamMP Launcher v" + std::string(GetVer()) + GetPatch()).c_str()); + SetConsoleOutputCP(CP_UTF8); + _setmode(_fileno(stdout), _O_U8TEXT); debug("Launcher Version : " + GetVer() + GetPatch()); CheckName(); LinuxPatch();