From 5b4dcf003eae82f3d1fe87b8ae41ea7e56c86b45 Mon Sep 17 00:00:00 2001
From: Tank_Master <none@none>
Date: Mon, 16 May 2011 23:58:28 -0700
Subject: Correctly identify Server 2008, Server 2008 R2, Server 2012, and
 Windows 8

---
 indra/llcommon/llsys.cpp | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

(limited to 'indra')

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index ca2d3f9181..e8616a9be6 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -188,22 +188,30 @@ LLOSInfo::LLOSInfo() :
 				 if(osvi.wProductType == VER_NT_WORKSTATION)
 					mOSStringSimple = "Microsoft Windows XP x64 Edition ";
 				 else
-					 mOSStringSimple = "Microsoft Windows Server 2003 ";
+					mOSStringSimple = "Microsoft Windows Server 2003 ";
 			}
-			else if(osvi.dwMajorVersion == 6 && osvi.dwMinorVersion <= 1)
+			else if(osvi.dwMajorVersion == 6 && osvi.dwMinorVersion <= 2)
 			{
 				if(osvi.dwMinorVersion == 0)
 				{
-					mOSStringSimple = "Microsoft Windows Vista ";
+					if(osvi.wProductType == VER_NT_WORKSTATION)
+						mOSStringSimple = "Microsoft Windows Vista ";
+					else
+						mOSStringSimple = "Windows Server 2008 ";
 				}
 				else if(osvi.dwMinorVersion == 1)
 				{
-					mOSStringSimple = "Microsoft Windows 7 ";
+					if(osvi.wProductType == VER_NT_WORKSTATION)
+						mOSStringSimple = "Microsoft Windows 7 ";
+					else
+						mOSStringSimple = "Windows Server 2008 R2 ";
 				}
-
-				if(osvi.wProductType != VER_NT_WORKSTATION)
+				else if(osvi.dwMinorVersion == 2)
 				{
-					mOSStringSimple += "Server ";
+					if(osvi.wProductType == VER_NT_WORKSTATION)
+						mOSStringSimple = "Microsoft Windows 8 ";
+					else
+						mOSStringSimple = "Windows Server 2012 ";
 				}
 
 				///get native system info if available..
@@ -308,8 +316,7 @@ LLOSInfo::LLOSInfo() :
 	std::string compatibility_mode;
 	if(got_shell32_version)
 	{
-		if(osvi.dwMajorVersion != shell32_major 
-			|| osvi.dwMinorVersion != shell32_minor)
+		if(osvi.dwMajorVersion != shell32_major || osvi.dwMinorVersion != shell32_minor)
 		{
 			compatibility_mode = llformat(" compatibility mode. real ver: %d.%d (Build %d)", 
 											shell32_major,
-- 
cgit v1.2.3