From d134686a10aae7237aa2effc46cba7b23080d06e Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 19 Nov 2013 17:44:33 +0000 Subject: [PATCH] * cygcheck.cc (dump_sysinfo): Drop code trying to fetch OSVERSIONINFO if fetching OSVERSIONINFOEX failed. Drop code handling unsupported platform IDs. Add code to tweak dwMinorVersion on Windows 8.1 if no manifest is present. --- winsup/utils/ChangeLog | 7 +++++++ winsup/utils/cygcheck.cc | 36 +++++++++++++++--------------------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog index fff35e2ec..01aa189ba 100644 --- a/winsup/utils/ChangeLog +++ b/winsup/utils/ChangeLog @@ -1,3 +1,10 @@ +2013-11-19 Corinna Vinschen + + * cygcheck.cc (dump_sysinfo): Drop code trying to fetch OSVERSIONINFO + if fetching OSVERSIONINFOEX failed. Drop code handling unsupported + platform IDs. Add code to tweak dwMinorVersion on Windows 8.1 if no + manifest is present. + 2013-11-19 Corinna Vinschen * Makefile.in (cygcheck.exe): Link against wininet.dll. diff --git a/winsup/utils/cygcheck.cc b/winsup/utils/cygcheck.cc index 209a7d181..87557da04 100644 --- a/winsup/utils/cygcheck.cc +++ b/winsup/utils/cygcheck.cc @@ -1430,7 +1430,6 @@ dump_sysinfo () time_t now; char *found_cygwin_dll; bool is_nt = false; - bool more_info = true; char osname[128]; DWORD obcaseinsensitive = 1; HKEY key; @@ -1442,23 +1441,12 @@ dump_sysinfo () OSVERSIONINFOEX osversion; osversion.dwOSVersionInfoSize = sizeof (OSVERSIONINFOEX); if (!GetVersionEx (reinterpret_cast(&osversion))) - { - more_info = false; - osversion.dwOSVersionInfoSize = sizeof (OSVERSIONINFO); - if (!GetVersionEx (reinterpret_cast(&osversion))) - display_error ("dump_sysinfo: GetVersionEx()"); - } + display_error ("dump_sysinfo: GetVersionEx()"); HMODULE k32 = GetModuleHandleW (L"kernel32.dll"); switch (osversion.dwPlatformId) { - case VER_PLATFORM_WIN32s: - strcpy (osname, "32s (not supported)"); - break; - case VER_PLATFORM_WIN32_WINDOWS: - strcpy (osname, "95/98/Me (not supported)"); - break; case VER_PLATFORM_WIN32_NT: is_nt = true; if (osversion.dwMajorVersion == 6) @@ -1477,15 +1465,21 @@ dump_sysinfo () ? "7" : "2008 R2"); break; case 2: - default: /* No way to distinguish W8 and W8.1 by OS version numbers - alone. */ - if (osversion.dwBuildNumber >= 9200) - strcpy (osname, osversion.wProductType == VER_NT_WORKSTATION - ? "8.1" : "2012 R2"); - else - strcpy (osname, osversion.wProductType == VER_NT_WORKSTATION - ? "8" : "2012"); + alone, unless the executables have a matching manifest. + What a big, fat mess. */ + if (osversion.dwBuildNumber < 9200) + { + strcpy (osname, osversion.wProductType == VER_NT_WORKSTATION + ? "8" : "2012"); + break; + } + /*FALLTHRU*/ + case 3: + default: + osversion.dwMinorVersion = 3; + strcpy (osname, osversion.wProductType == VER_NT_WORKSTATION + ? "8.1" : "2012 R2"); break; } DWORD prod;