From: Kalle Sommer Nielsen Date: Tue, 12 Oct 2010 17:34:25 +0000 (+0000) Subject: * Added version info for Windows XP Starter/Tablet PC/Media Center editions X-Git-Tag: php-5.4.0alpha1~191^2~796 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=890d89fdb8a8fa970108afd3f4c77b286c6a2898;p=php * Added version info for Windows XP Starter/Tablet PC/Media Center editions * Fixed typo: "Unknow" -> "Unknown" * Removed useless Win9x version info # I will merge this to 5.3 once I have analyzed a possible bug # (and hopefully fixed) why Server 2008 is reported as unknown --- diff --git a/ext/standard/info.c b/ext/standard/info.c index b467d9390b..26ef55658c 100644 --- a/ext/standard/info.c +++ b/ext/standard/info.c @@ -348,7 +348,7 @@ char* php_get_windows_name() major = "Windows Server 2008 R2"; } } else { - major = "Unknow Windows version"; + major = "Unknown Windows version"; } pGPI = (PGPI) GetProcAddress(GetModuleHandle("kernel32.dll"), "GetProductInfo"); @@ -454,9 +454,17 @@ char* php_get_windows_name() if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 ) { major = "Windows XP"; - if( osvi.wSuiteMask & VER_SUITE_PERSONAL ) + if( osvi.wSuiteMask & VER_SUITE_PERSONAL ) { sub = "Home Edition"; - else sub = "Professional"; + } else if (GetSystemMetrics(SM_MEDIACENTER)) { + sub = "Media Center Edition"; + } else if (GetSystemMetrics(SM_STARTER)) { + sub = "Starter Edition"; + } else if (GetSystemMetrics(SM_TABLETPC)) { + sub = "Tablet PC Edition"; + } else { + sub = "Professional"; + } } if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 ) { @@ -538,11 +546,7 @@ PHPAPI char *php_get_uname(char mode) GetComputerName(ComputerName, &dwSize); if (mode == 's') { - if (dwVersion < 0x80000000) { - php_uname = "Windows NT"; - } else { - php_uname = "Windows 9x"; - } + php_uname = "Windows NT"; } else if (mode == 'r') { snprintf(tmp_uname, sizeof(tmp_uname), "%d.%d", dwWindowsMajorVersion, dwWindowsMinorVersion); php_uname = tmp_uname; @@ -564,23 +568,16 @@ PHPAPI char *php_get_uname(char mode) php_get_windows_cpu(tmp_uname, sizeof(tmp_uname)); php_uname = tmp_uname; } else { /* assume mode == 'a' */ - /* Get build numbers for Windows NT or Win95 */ - if (dwVersion < 0x80000000){ - char *winver = php_get_windows_name(); - char wincpu[20]; - - php_get_windows_cpu(wincpu, sizeof(wincpu)); - dwBuild = (DWORD)(HIWORD(dwVersion)); - snprintf(tmp_uname, sizeof(tmp_uname), "%s %s %d.%d build %d (%s) %s", - "Windows NT", ComputerName, - dwWindowsMajorVersion, dwWindowsMinorVersion, dwBuild, winver?winver:"unknown", wincpu); - if(winver) { - efree(winver); - } - } else { - snprintf(tmp_uname, sizeof(tmp_uname), "%s %s %d.%d", - "Windows 9x", ComputerName, - dwWindowsMajorVersion, dwWindowsMinorVersion); + char *winver = php_get_windows_name(); + char wincpu[20]; + + php_get_windows_cpu(wincpu, sizeof(wincpu)); + dwBuild = (DWORD)(HIWORD(dwVersion)); + snprintf(tmp_uname, sizeof(tmp_uname), "%s %s %d.%d build %d (%s) %s", + "Windows NT", ComputerName, + dwWindowsMajorVersion, dwWindowsMinorVersion, dwBuild, winver?winver:"unknown", wincpu); + if(winver) { + efree(winver); } php_uname = tmp_uname; } diff --git a/ext/standard/winver.h b/ext/standard/winver.h index cb469a91c0..7152d60811 100755 --- a/ext/standard/winver.h +++ b/ext/standard/winver.h @@ -1,6 +1,15 @@ #ifndef _PHP_WINVER_H #define _PHP_WINVER_H +#ifndef SM_TABLETPC +#define SM_TABLETPC 86 +#endif +#ifndef SM_MEDIACENTER +#define SM_MEDIACENTER 87 +#endif +#ifndef SM_STARTER +#define SM_STARTER 88 +#endif #ifndef SM_SERVERR2 #define SM_SERVERR2 89 #endif