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
|
fi
|
||||||
|
|
||||||
dnl ---------------------------------------------------------------------------
|
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 ---------------------------------------------------------------------------
|
dnl ---------------------------------------------------------------------------
|
||||||
|
|
||||||
if test "$cross_compiling" = "yes"; then
|
if test "$cross_compiling" = "yes"; then
|
||||||
|
@@ -230,6 +230,7 @@ All:
|
|||||||
behavior between Unicode and non-unicode builds
|
behavior between Unicode and non-unicode builds
|
||||||
- BLOB example added to samples\db (thanks to Casey ODonnell)
|
- BLOB example added to samples\db (thanks to Casey ODonnell)
|
||||||
- use wxStream::GetLength() instead of deprecated GetSize()
|
- use wxStream::GetLength() instead of deprecated GetSize()
|
||||||
|
- wxGetOsDescription() is now more precise (Olly Betts)
|
||||||
|
|
||||||
All (GUI):
|
All (GUI):
|
||||||
|
|
||||||
|
@@ -937,8 +937,39 @@ wxString wxGetOsDescription()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case VER_PLATFORM_WIN32_WINDOWS:
|
case VER_PLATFORM_WIN32_WINDOWS:
|
||||||
str.Printf(_("Windows 9%c"),
|
switch (info.dwMinorVersion)
|
||||||
info.dwMinorVersion == 0 ? _T('5') : _T('8'));
|
{
|
||||||
|
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) )
|
if ( !wxIsEmpty(info.szCSDVersion) )
|
||||||
{
|
{
|
||||||
str << _T(" (") << info.szCSDVersion << _T(')');
|
str << _T(" (") << info.szCSDVersion << _T(')');
|
||||||
@@ -946,10 +977,31 @@ wxString wxGetOsDescription()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case VER_PLATFORM_WIN32_NT:
|
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.dwMajorVersion,
|
||||||
info.dwMinorVersion,
|
info.dwMinorVersion,
|
||||||
info.dwBuildNumber);
|
info.dwBuildNumber);
|
||||||
|
}
|
||||||
if ( !wxIsEmpty(info.szCSDVersion) )
|
if ( !wxIsEmpty(info.szCSDVersion) )
|
||||||
{
|
{
|
||||||
str << _T(", ") << info.szCSDVersion;
|
str << _T(", ") << info.szCSDVersion;
|
||||||
|
@@ -92,11 +92,24 @@ wxToolkitInfo& wxConsoleAppTraits::GetToolkitInfo()
|
|||||||
{
|
{
|
||||||
static wxToolkitInfo info;
|
static wxToolkitInfo info;
|
||||||
int major, minor;
|
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 =
|
major =
|
||||||
minor = -1;
|
minor = -1;
|
||||||
}
|
}
|
||||||
|
@@ -837,11 +837,20 @@ bool wxGetUserName(wxChar *buf, int sz)
|
|||||||
|
|
||||||
wxString wxGetOsDescription()
|
wxString wxGetOsDescription()
|
||||||
{
|
{
|
||||||
#ifndef WXWIN_OS_DESCRIPTION
|
FILE *f = popen("uname -s -r -m", "r");
|
||||||
#error WXWIN_OS_DESCRIPTION should be defined in config.h by configure
|
if (f)
|
||||||
#else
|
{
|
||||||
return wxString::FromAscii( WXWIN_OS_DESCRIPTION );
|
char buf[256];
|
||||||
#endif
|
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__
|
#endif // !__WXMAC__
|
||||||
|
Reference in New Issue
Block a user