better (more precise) values for wxGetOsDescription() (patch 1047539)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30432 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -5745,7 +5745,7 @@ if test "$wxUSE_WIZARDDLG" = "yes"; then
|
||||
fi
|
||||
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl get the string with OS info - used by wxGetOsDescription()
|
||||
dnl get the string with OS info - used by wxGetOsDescription() on MacOS X
|
||||
dnl ---------------------------------------------------------------------------
|
||||
|
||||
if test "$cross_compiling" = "yes"; then
|
||||
|
@@ -230,6 +230,7 @@ All:
|
||||
behavior between Unicode and non-unicode builds
|
||||
- BLOB example added to samples\db (thanks to Casey ODonnell)
|
||||
- use wxStream::GetLength() instead of deprecated GetSize()
|
||||
- wxGetOsDescription() is now more precise (Olly Betts)
|
||||
|
||||
All (GUI):
|
||||
|
||||
|
@@ -937,8 +937,39 @@ wxString wxGetOsDescription()
|
||||
break;
|
||||
|
||||
case VER_PLATFORM_WIN32_WINDOWS:
|
||||
str.Printf(_("Windows 9%c"),
|
||||
info.dwMinorVersion == 0 ? _T('5') : _T('8'));
|
||||
switch (info.dwMinorVersion)
|
||||
{
|
||||
case 0:
|
||||
if ( info.szCSDVersion[1] == 'B' ||
|
||||
info.szCSDVersion[1] == 'C' )
|
||||
{
|
||||
str = _("Windows 95 OSR2");
|
||||
}
|
||||
else
|
||||
{
|
||||
str = _("Windows 95");
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if ( info.szCSDVersion[1] == 'B' ||
|
||||
info.szCSDVersion[1] == 'C' )
|
||||
{
|
||||
str = _("Windows 98 SE");
|
||||
}
|
||||
else
|
||||
{
|
||||
str = _("Windows 98");
|
||||
}
|
||||
break;
|
||||
case 90:
|
||||
str = _("Windows ME");
|
||||
break;
|
||||
default:
|
||||
str.Printf(_("Windows 9x (%d.%d)"),
|
||||
info.dwMajorVersion,
|
||||
info.dwMinorVersion);
|
||||
break;
|
||||
}
|
||||
if ( !wxIsEmpty(info.szCSDVersion) )
|
||||
{
|
||||
str << _T(" (") << info.szCSDVersion << _T(')');
|
||||
@@ -946,10 +977,31 @@ wxString wxGetOsDescription()
|
||||
break;
|
||||
|
||||
case VER_PLATFORM_WIN32_NT:
|
||||
str.Printf(_T("Windows NT %lu.%lu (build %lu"),
|
||||
if ( info.dwMajorVersion == 5 )
|
||||
{
|
||||
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"),
|
||||
info.dwBuildNumber);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( wxIsEmpty(str) )
|
||||
{
|
||||
str.Printf(_("Windows NT %lu.%lu (build %lu"),
|
||||
info.dwMajorVersion,
|
||||
info.dwMinorVersion,
|
||||
info.dwBuildNumber);
|
||||
}
|
||||
if ( !wxIsEmpty(info.szCSDVersion) )
|
||||
{
|
||||
str << _T(", ") << info.szCSDVersion;
|
||||
|
@@ -92,11 +92,24 @@ wxToolkitInfo& wxConsoleAppTraits::GetToolkitInfo()
|
||||
{
|
||||
static wxToolkitInfo info;
|
||||
int major, minor;
|
||||
char name[256];
|
||||
|
||||
if ( sscanf(WXWIN_OS_DESCRIPTION, "%255s %d.%d", name, &major, &minor) != 3 )
|
||||
FILE *f = popen("uname -r", "r");
|
||||
if (f)
|
||||
{
|
||||
// unreckognized uname string format
|
||||
char buf[32];
|
||||
size_t c = fread(buf, 1, sizeof(buf) - 1, f);
|
||||
pclose(f);
|
||||
buf[c] = '\0';
|
||||
if ( sscanf(buf, "%d.%d", &major, &minor) != 2 )
|
||||
{
|
||||
// unrecognized uname string format
|
||||
major =
|
||||
minor = -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// failed to run uname
|
||||
major =
|
||||
minor = -1;
|
||||
}
|
||||
|
@@ -837,11 +837,20 @@ bool wxGetUserName(wxChar *buf, int sz)
|
||||
|
||||
wxString wxGetOsDescription()
|
||||
{
|
||||
#ifndef WXWIN_OS_DESCRIPTION
|
||||
#error WXWIN_OS_DESCRIPTION should be defined in config.h by configure
|
||||
#else
|
||||
return wxString::FromAscii( WXWIN_OS_DESCRIPTION );
|
||||
#endif
|
||||
FILE *f = popen("uname -s -r -m", "r");
|
||||
if (f)
|
||||
{
|
||||
char buf[256];
|
||||
size_t c = fread(buf, 1, sizeof(buf) - 1, f);
|
||||
pclose(f);
|
||||
// Trim newline from output.
|
||||
if (c && buf[c - 1] == '\n')
|
||||
--c;
|
||||
buf[c] = '\0';
|
||||
return wxString::FromAscii( buf );
|
||||
}
|
||||
wxFAIL_MSG( _T("uname failed") );
|
||||
return _T("");
|
||||
}
|
||||
|
||||
#endif // !__WXMAC__
|
||||
|
Reference in New Issue
Block a user