From b0497573028c9ce6f04de72ef2c57002217dfeef Mon Sep 17 00:00:00 2001 From: Berke Viktor Date: Thu, 24 Apr 2014 12:37:11 +0200 Subject: [PATCH] Replace deprecated GetVersionEx calls with version helpers Only compiles with 8.1 SDK but runs everywhere Closes #957 --- src/common/util.c | 145 +++++++++++++++++++++++++--------------------- 1 file changed, 80 insertions(+), 65 deletions(-) diff --git a/src/common/util.c b/src/common/util.c index 0549bd6e..4582eec6 100644 --- a/src/common/util.c +++ b/src/common/util.c @@ -33,6 +33,7 @@ #include #include #include +#include #include "../dirent/dirent-win32.h" #include "../../config-win32.h" #else @@ -689,74 +690,88 @@ get_sys_str (int with_cpu) { static char verbuf[64]; static char winver[20]; - OSVERSIONINFOEX osvi; double mhz; - osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFOEX); - GetVersionEx ((OSVERSIONINFO*) &osvi); - - switch (osvi.dwMajorVersion) + if (IsWindows8Point1OrGreater ()) { - case 5: - switch (osvi.dwMinorVersion) - { - case 1: - strcpy (winver, "XP"); - break; - case 2: - if (osvi.wProductType == VER_NT_WORKSTATION) - { - strcpy (winver, "XP x64 Edition"); - } - else - { - if (GetSystemMetrics(SM_SERVERR2) == 0) - { - strcpy (winver, "Server 2003"); - } - else - { - strcpy (winver, "Server 2003 R2"); - } - } - break; - } - break; - case 6: - switch (osvi.dwMinorVersion) - { - case 0: - if (osvi.wProductType == VER_NT_WORKSTATION) - { - strcpy (winver, "Vista"); - } - else - { - strcpy (winver, "Server 2008"); - } - break; - case 1: - if (osvi.wProductType == VER_NT_WORKSTATION) - { - strcpy (winver, "7"); - } - else - { - strcpy (winver, "Server 2008 R2"); - } - break; - case 2: - if (osvi.wProductType == VER_NT_WORKSTATION) - { - strcpy (winver, "8"); - } - else - { - strcpy (winver, "Server 2012"); - } - break; - } - break; + if (IsWindowsServer ()) + { + strcpy (winver, "Server 2012 R2"); + } + else + { + strcpy (winver, "8.1"); + } + } + else if (IsWindows8OrGreater ()) + { + if (IsWindowsServer ()) + { + strcpy (winver, "Server 2012"); + } + else + { + strcpy (winver, "8"); + } + } + else if (IsWindows7SP1OrGreater ()) + { + if (IsWindowsServer ()) + { + strcpy (winver, "Server 2008 R2 SP1"); + } + else + { + strcpy (winver, "7 SP1"); + } + } + else if (IsWindows7OrGreater ()) + { + if (IsWindowsServer ()) + { + strcpy (winver, "Server 2008 R2"); + } + else + { + strcpy (winver, "7"); + } + } + else if (IsWindowsVistaSP2OrGreater ()) + { + if (IsWindowsServer ()) + { + strcpy (winver, "Server 2008 SP2"); + } + else + { + strcpy (winver, "Vista SP2"); + } + } + else if (IsWindowsVistaSP1OrGreater ()) + { + if (IsWindowsServer ()) + { + strcpy (winver, "Server 2008 SP1"); + } + else + { + strcpy (winver, "Vista SP1"); + } + } + else if (IsWindowsVistaOrGreater ()) + { + if (IsWindowsServer ()) + { + strcpy (winver, "Server 2008"); + } + else + { + strcpy (winver, "Vista"); + } + } + else + { + strcpy (winver, "Unknown"); } mhz = get_mhz ();