summaryrefslogtreecommitdiff
path: root/ext/standard/info.c
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2014-07-08 09:54:36 +0200
committerAnatol Belski <ab@php.net>2014-07-08 09:54:36 +0200
commit51f79846bf5b8829a7fd70b03c278bdd88e5fbce (patch)
treee8080afcb0ce186bd247479090fbc0b8725ef0e0 /ext/standard/info.c
parente715038920301172fe3b0621375a9e3b5de0cf62 (diff)
downloadphp-git-51f79846bf5b8829a7fd70b03c278bdd88e5fbce.tar.gz
Backported the patch from bug #67407 into 5.5+
Diffstat (limited to 'ext/standard/info.c')
-rw-r--r--ext/standard/info.c34
1 files changed, 30 insertions, 4 deletions
diff --git a/ext/standard/info.c b/ext/standard/info.c
index 2c44a8260f..b2ff32db92 100644
--- a/ext/standard/info.c
+++ b/ext/standard/info.c
@@ -335,11 +335,37 @@ char* php_get_windows_name()
major = "Windows Server 2008 R2";
}
} else if ( osvi.dwMinorVersion == 2 ) {
- if( osvi.wProductType == VER_NT_WORKSTATION ) {
- major = "Windows 8";
+ /* could be Windows 8/Windows Server 2012, could be Windows 8.1/Windows Server 2012 R2 */
+ OSVERSIONINFOEX osvi81;
+ DWORDLONG dwlConditionMask = 0;
+ int op = VER_GREATER_EQUAL;
+
+ ZeroMemory(&osvi81, sizeof(OSVERSIONINFOEX));
+ osvi81.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
+ osvi81.dwMajorVersion = 6;
+ osvi81.dwMinorVersion = 3;
+ osvi81.wServicePackMajor = 0;
+
+ VER_SET_CONDITION(dwlConditionMask, VER_MAJORVERSION, op);
+ VER_SET_CONDITION(dwlConditionMask, VER_MINORVERSION, op);
+ VER_SET_CONDITION(dwlConditionMask, VER_SERVICEPACKMAJOR, op);
+
+ if (VerifyVersionInfo(&osvi81,
+ VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR,
+ dwlConditionMask)) {
+ osvi.dwMinorVersion = 3; /* Windows 8.1/Windows Server 2012 R2 */
+ if( osvi.wProductType == VER_NT_WORKSTATION ) {
+ major = "Windows 8.1";
+ } else {
+ major = "Windows Server 2012 R2";
+ }
} else {
- major = "Windows Server 2012";
- }
+ if( osvi.wProductType == VER_NT_WORKSTATION ) {
+ major = "Windows 8";
+ } else {
+ major = "Windows Server 2012";
+ }
+ }
} else {
major = "Unknown Windows version";
}