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
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):
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(')');
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;
{
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;
}
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__