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:
Vadim Zeitlin
2004-11-10 22:08:37 +00:00
parent 3e5f6c1c4f
commit db1d019338
5 changed files with 87 additions and 12 deletions

View File

@@ -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

View File

@@ -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):

View File

@@ -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;

View File

@@ -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;
} }

View File

@@ -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__