return false;
#else // Win32
// first get the size of the buffer
- DWORD dwRet = ::GetEnvironmentVariable(var.wx_str(), NULL, 0);
+ DWORD dwRet = ::GetEnvironmentVariable(var.t_str(), NULL, 0);
if ( !dwRet )
{
// this means that there is no such variable
if ( value )
{
- (void)::GetEnvironmentVariable(var.wx_str(),
+ (void)::GetEnvironmentVariable(var.t_str(),
wxStringBuffer(*value, dwRet),
dwRet);
}
// no environment variables under CE
return false;
#else
- if ( !::SetEnvironmentVariable(var.wx_str(), value) )
+ if ( !::SetEnvironmentVariable(var.t_str(), value) )
{
wxLogLastError(_T("SetEnvironmentVariable"));
bool wxSetEnv(const wxString& variable, const wxString& value)
{
- return wxDoSetEnv(variable, value.wx_str());
+ return wxDoSetEnv(variable, value.t_str());
}
bool wxUnsetEnv(const wxString& variable)
// OS version
// ----------------------------------------------------------------------------
+// check if we're running under a server or workstation Windows system: it
+// returns true or false with obvious meaning as well as -1 if the system type
+// couldn't be determined
+//
+// this function is currently private but we may want to expose it later if
+// it's really useful
+namespace
+{
+
+int wxIsWindowsServer()
+{
+#ifdef VER_NT_WORKSTATION
+ OSVERSIONINFOEX info;
+ wxZeroMemory(info);
+
+ info.dwOSVersionInfoSize = sizeof(info);
+ if ( ::GetVersionEx(wx_reinterpret_cast(OSVERSIONINFO *, &info)) )
+ {
+ switch ( info.wProductType )
+ {
+ case VER_NT_WORKSTATION:
+ return false;
+
+ case VER_NT_SERVER:
+ case VER_NT_DOMAIN_CONTROLLER:
+ return true;
+ }
+ }
+#endif // VER_NT_WORKSTATION
+
+ return -1;
+}
+
+} // anonymous namespace
+
wxString wxGetOsDescription()
{
wxString str;
break;
case VER_PLATFORM_WIN32_NT:
- if ( info.dwMajorVersion == 5 )
+ switch ( info.dwMajorVersion )
{
- switch ( info.dwMinorVersion )
- {
- case 0:
- str.Printf(_("Windows 2000 (build %lu"),
- info.dwBuildNumber);
- break;
- case 1:
- str.Printf(_("Windows XP (build %lu"),
- info.dwBuildNumber);
- break;
- case 2:
- str.Printf(_("Windows Server 2003 (build %lu"),
+ case 5:
+ switch ( info.dwMinorVersion )
+ {
+ case 0:
+ str.Printf(_("Windows 2000 (build %lu"),
+ info.dwBuildNumber);
+ break;
+
+ case 2:
+ // we can't distinguish between XP 64 and 2003
+ // as they both are 5.2, so examine the product
+ // type to resolve this ambiguity
+ if ( wxIsWindowsServer() == 1 )
+ {
+ str.Printf(_("Windows Server 2003 (build %lu"),
+ info.dwBuildNumber);
+ break;
+ }
+ //else: must be XP, fall through
+
+ case 1:
+ str.Printf(_("Windows XP (build %lu"),
+ info.dwBuildNumber);
+ break;
+ }
+ break;
+
+ case 6:
+ if ( info.dwMinorVersion == 0 )
+ {
+ str.Printf(_("Windows Vista (build %lu"),
info.dwBuildNumber);
- break;
- }
+ }
+ break;
}
+
if ( str.empty() )
{
str.Printf(_("Windows NT %lu.%lu (build %lu"),
info.dwMinorVersion,
info.dwBuildNumber);
}
+
if ( !wxIsEmpty(info.szCSDVersion) )
{
str << _T(", ") << info.szCSDVersion;
}
str << _T(')');
+
+ if ( wxIsPlatform64Bit() )
+ str << _(", 64-bit edition");
break;
}
}