Skip to content

Commit 890d89f

Browse files
committed
* 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
1 parent bfe5184 commit 890d89f

File tree

2 files changed

+31
-25
lines changed

2 files changed

+31
-25
lines changed

ext/standard/info.c

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ char* php_get_windows_name()
348348
major = "Windows Server 2008 R2";
349349
}
350350
} else {
351-
major = "Unknow Windows version";
351+
major = "Unknown Windows version";
352352
}
353353

354354
pGPI = (PGPI) GetProcAddress(GetModuleHandle("kernel32.dll"), "GetProductInfo");
@@ -454,9 +454,17 @@ char* php_get_windows_name()
454454

455455
if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 ) {
456456
major = "Windows XP";
457-
if( osvi.wSuiteMask & VER_SUITE_PERSONAL )
457+
if( osvi.wSuiteMask & VER_SUITE_PERSONAL ) {
458458
sub = "Home Edition";
459-
else sub = "Professional";
459+
} else if (GetSystemMetrics(SM_MEDIACENTER)) {
460+
sub = "Media Center Edition";
461+
} else if (GetSystemMetrics(SM_STARTER)) {
462+
sub = "Starter Edition";
463+
} else if (GetSystemMetrics(SM_TABLETPC)) {
464+
sub = "Tablet PC Edition";
465+
} else {
466+
sub = "Professional";
467+
}
460468
}
461469

462470
if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 ) {
@@ -538,11 +546,7 @@ PHPAPI char *php_get_uname(char mode)
538546
GetComputerName(ComputerName, &dwSize);
539547

540548
if (mode == 's') {
541-
if (dwVersion < 0x80000000) {
542-
php_uname = "Windows NT";
543-
} else {
544-
php_uname = "Windows 9x";
545-
}
549+
php_uname = "Windows NT";
546550
} else if (mode == 'r') {
547551
snprintf(tmp_uname, sizeof(tmp_uname), "%d.%d", dwWindowsMajorVersion, dwWindowsMinorVersion);
548552
php_uname = tmp_uname;
@@ -564,23 +568,16 @@ PHPAPI char *php_get_uname(char mode)
564568
php_get_windows_cpu(tmp_uname, sizeof(tmp_uname));
565569
php_uname = tmp_uname;
566570
} else { /* assume mode == 'a' */
567-
/* Get build numbers for Windows NT or Win95 */
568-
if (dwVersion < 0x80000000){
569-
char *winver = php_get_windows_name();
570-
char wincpu[20];
571-
572-
php_get_windows_cpu(wincpu, sizeof(wincpu));
573-
dwBuild = (DWORD)(HIWORD(dwVersion));
574-
snprintf(tmp_uname, sizeof(tmp_uname), "%s %s %d.%d build %d (%s) %s",
575-
"Windows NT", ComputerName,
576-
dwWindowsMajorVersion, dwWindowsMinorVersion, dwBuild, winver?winver:"unknown", wincpu);
577-
if(winver) {
578-
efree(winver);
579-
}
580-
} else {
581-
snprintf(tmp_uname, sizeof(tmp_uname), "%s %s %d.%d",
582-
"Windows 9x", ComputerName,
583-
dwWindowsMajorVersion, dwWindowsMinorVersion);
571+
char *winver = php_get_windows_name();
572+
char wincpu[20];
573+
574+
php_get_windows_cpu(wincpu, sizeof(wincpu));
575+
dwBuild = (DWORD)(HIWORD(dwVersion));
576+
snprintf(tmp_uname, sizeof(tmp_uname), "%s %s %d.%d build %d (%s) %s",
577+
"Windows NT", ComputerName,
578+
dwWindowsMajorVersion, dwWindowsMinorVersion, dwBuild, winver?winver:"unknown", wincpu);
579+
if(winver) {
580+
efree(winver);
584581
}
585582
php_uname = tmp_uname;
586583
}

ext/standard/winver.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
#ifndef _PHP_WINVER_H
22
#define _PHP_WINVER_H
33

4+
#ifndef SM_TABLETPC
5+
#define SM_TABLETPC 86
6+
#endif
7+
#ifndef SM_MEDIACENTER
8+
#define SM_MEDIACENTER 87
9+
#endif
10+
#ifndef SM_STARTER
11+
#define SM_STARTER 88
12+
#endif
413
#ifndef SM_SERVERR2
514
#define SM_SERVERR2 89
615
#endif

0 commit comments

Comments
 (0)