diff options
Diffstat (limited to 'indra/llcommon')
| -rw-r--r-- | indra/llcommon/llerror.h | 4 | ||||
| -rw-r--r-- | indra/llcommon/llstring.h | 1 | ||||
| -rw-r--r-- | indra/llcommon/llsys.cpp | 39 | 
3 files changed, 39 insertions, 5 deletions
| diff --git a/indra/llcommon/llerror.h b/indra/llcommon/llerror.h index 6794be4904..37e922d4b7 100644 --- a/indra/llcommon/llerror.h +++ b/indra/llcommon/llerror.h @@ -239,7 +239,7 @@ typedef LLError::NoClassInfo _LL_CLASS_TO_LOG;  */  #define lllog(level, broadTag, narrowTag, once) \ -	{ \ +	do { \  		static LLError::CallSite _site( \  			level, __FILE__, __LINE__, typeid(_LL_CLASS_TO_LOG), __FUNCTION__, broadTag, narrowTag, once);\  		if (_site.shouldLog()) \ @@ -252,7 +252,7 @@ typedef LLError::NoClassInfo _LL_CLASS_TO_LOG;  			LLError::End(); \  			LLError::Log::flush(_out, _site); \  		} \ -	} +	} while(0)  // DEPRECATED: Use the new macros that allow tags and *look* like macros.  #define lldebugs	lllog(LLError::LEVEL_DEBUG, NULL, NULL, false) diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h index 8f70726a9e..eca7e922fd 100644 --- a/indra/llcommon/llstring.h +++ b/indra/llcommon/llstring.h @@ -34,6 +34,7 @@  #define LL_LLSTRING_H  #include <string> +#include <cstdio>  #include <locale>  #include <iomanip>  #include "llsd.h" diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp index 4d03c4d40d..4737421289 100644 --- a/indra/llcommon/llsys.cpp +++ b/indra/llcommon/llsys.cpp @@ -124,9 +124,42 @@ LLOSInfo::LLOSInfo() :  			}  			else if(osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 0)  			{ -				 if(osvi.wProductType == VER_NT_WORKSTATION) -					mOSStringSimple = "Microsoft Windows Vista "; -				 else mOSStringSimple = "Microsoft Windows Vista Server "; +				///get native system info if available.. +				typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO); ///function pointer for loading GetNativeSystemInfo +				SYSTEM_INFO si; //System Info object file contains architecture info +				PGNSI pGNSI; //pointer object +				ZeroMemory(&si, sizeof(SYSTEM_INFO)); //zero out the memory in information +				pGNSI = (PGNSI) GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")),  "GetNativeSystemInfo"); //load kernel32 get function +				if(NULL != pGNSI) //check if it has failed +					pGNSI(&si); //success +				else  +					GetSystemInfo(&si); //if it fails get regular system info  +				//(Warning: If GetSystemInfo it may result in incorrect information in a WOW64 machine, if the kernel fails to load) + +				//msdn microsoft finds 32 bit and 64 bit flavors this way.. +				//http://msdn.microsoft.com/en-us/library/ms724429(VS.85).aspx (example code that contains quite a few more flavors +				//of windows than this code does (in case it is needed for the future) +				if ( si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64 ) //check for 64 bit +				{ +					 if(osvi.wProductType == VER_NT_WORKSTATION) +						mOSStringSimple = "Microsoft Windows Vista 64-bit "; +					 else  +						mOSStringSimple = "Microsoft Windows Vista Server 64-bit "; +				} +				else if (si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_INTEL ) +				{ +					 if(osvi.wProductType == VER_NT_WORKSTATION) +						mOSStringSimple = "Microsoft Windows Vista 32-bit "; +					 else  +						mOSStringSimple = "Microsoft Windows Vista Server 32-bit "; +				} +				else // PROCESSOR_ARCHITECTURE_IA64 || PROCESSOR_ARCHITECTURE_UNKNOWN not checked +				{ +					 if(osvi.wProductType == VER_NT_WORKSTATION) +						mOSStringSimple = "Microsoft Windows Vista "; +					 else  +						mOSStringSimple = "Microsoft Windows Vista Server "; +				}  			}  			else   // Use the registry on early versions of Windows NT.  			{ | 
