aboutsummaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/common')
-rw-r--r--src/common/Debugging/WheatyExceptionReport.cpp2
-rw-r--r--src/common/Utilities/Util.cpp24
-rw-r--r--src/common/Utilities/Util.h2
3 files changed, 23 insertions, 5 deletions
diff --git a/src/common/Debugging/WheatyExceptionReport.cpp b/src/common/Debugging/WheatyExceptionReport.cpp
index e0b0bd105de..943c0699381 100644
--- a/src/common/Debugging/WheatyExceptionReport.cpp
+++ b/src/common/Debugging/WheatyExceptionReport.cpp
@@ -234,7 +234,7 @@ BOOL WheatyExceptionReport::_GetWindowsVersion(TCHAR* szVersion, DWORD cntMax)
RTL_OSVERSIONINFOEXW osvi = { };
osvi.dwOSVersionInfoSize = sizeof(RTL_OSVERSIONINFOEXW);
NTSTATUS bVersionEx = RtlGetVersion((PRTL_OSVERSIONINFOW)&osvi);
- if (bVersionEx < 0)
+ if (FAILED(bVersionEx))
{
osvi.dwOSVersionInfoSize = sizeof(RTL_OSVERSIONINFOW);
if (!RtlGetVersion((PRTL_OSVERSIONINFOW)&osvi))
diff --git a/src/common/Utilities/Util.cpp b/src/common/Utilities/Util.cpp
index 8ca639ba6a4..9f9762980b5 100644
--- a/src/common/Utilities/Util.cpp
+++ b/src/common/Utilities/Util.cpp
@@ -31,11 +31,27 @@
#include <ctime>
#include <boost/core/demangle.hpp>
-#if TRINITY_COMPILER == TRINITY_COMPILER_GNU
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
+void Trinity::VerifyOsVersion()
+{
+#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
+ auto isWindowsBuildGreaterOrEqual = [](DWORD build)
+ {
+ OSVERSIONINFOEX osvi = { sizeof(osvi), 0, 0, build, 0, {0}, 0, 0, 0, 0 };
+ ULONGLONG conditionMask = 0;
+ VER_SET_CONDITION(conditionMask, VER_BUILDNUMBER, VER_GREATER_EQUAL);
+
+ return VerifyVersionInfo(&osvi, VER_BUILDNUMBER, conditionMask);
+ };
+
+ if (!isWindowsBuildGreaterOrEqual(TRINITY_REQUIRED_WINDOWS_BUILD))
+ {
+ OSVERSIONINFOEX osvi = { sizeof(osvi), 0, 0, 0, 0, {0}, 0, 0, 0, 0 };
+ GetVersionEx((LPOSVERSIONINFO)&osvi);
+ ABORT_MSG("TrinityCore requires Windows 10 19H1 (1903) or Windows Server 2019 (1903) - require build number 10.0.%d but found %d.%d.%d",
+ TRINITY_REQUIRED_WINDOWS_BUILD, osvi.dwMajorVersion, osvi.dwMinorVersion, osvi.dwBuildNumber);
+ }
#endif
+}
std::vector<std::string_view> Trinity::Tokenize(std::string_view str, char sep, bool keepEmpty)
{
diff --git a/src/common/Utilities/Util.h b/src/common/Utilities/Util.h
index 14d633e2ae8..6ddbedd2054 100644
--- a/src/common/Utilities/Util.h
+++ b/src/common/Utilities/Util.h
@@ -39,6 +39,8 @@ enum class TimeFormat : uint8
namespace Trinity
{
+ TC_COMMON_API void VerifyOsVersion();
+
TC_COMMON_API std::vector<std::string_view> Tokenize(std::string_view str, char sep, bool keepEmpty);
/* this would return string_view into temporary otherwise */