* cygcheck.cc (dump_sysinfo): Convert osname to const and remove casts

in subsequent assignments.  Recognize Longhorn/Vista and report as not
	yet supported.  Recognize when running under WOW64 and report native
	CPU type.  Slightly rearrange \n printing.
This commit is contained in:
Corinna Vinschen 2006-01-13 13:39:05 +00:00
parent 494139ffe3
commit 67066cabad
2 changed files with 66 additions and 31 deletions

View File

@ -1,3 +1,10 @@
2006-01-13 Corinna Vinschen <corinna@vinschen.de>
* cygcheck.cc (dump_sysinfo): Convert osname to const and remove casts
in subsequent assignments. Recognize Longhorn/Vista and report as not
yet supported. Recognize when running under WOW64 and report native
CPU type. Slightly rearrange \n printing.
2006-01-12 Christopher Faylor <cgf@timesys.com> 2006-01-12 Christopher Faylor <cgf@timesys.com>
* cygcheck.cc: Replace ` with ' throughout. * cygcheck.cc: Replace ` with ' throughout.

View File

@ -1039,38 +1039,40 @@ dump_sysinfo ()
osversion.dwOSVersionInfoSize = sizeof (osversion); osversion.dwOSVersionInfoSize = sizeof (osversion);
if (!GetVersionEx (&osversion)) if (!GetVersionEx (&osversion))
display_error ("dump_sysinfo: GetVersionEx()"); display_error ("dump_sysinfo: GetVersionEx()");
char *osname = (char *) "unknown OS"; const char *osname = "unknown OS";
switch (osversion.dwPlatformId) switch (osversion.dwPlatformId)
{ {
case VER_PLATFORM_WIN32s: case VER_PLATFORM_WIN32s:
osname = (char *) "32s"; osname = "32s";
break; break;
case VER_PLATFORM_WIN32_WINDOWS: case VER_PLATFORM_WIN32_WINDOWS:
switch (osversion.dwMinorVersion) switch (osversion.dwMinorVersion)
{ {
case 0: case 0:
if (strchr (osversion.szCSDVersion, 'C')) if (strchr (osversion.szCSDVersion, 'C'))
osname = (char *) "95 OSR2"; osname = "95 OSR2";
else else
osname = (char *) "95"; osname = "95";
break; break;
case 10: case 10:
if (strchr (osversion.szCSDVersion, 'A')) if (strchr (osversion.szCSDVersion, 'A'))
osname = (char *) "98 SE"; osname = "98 SE";
else else
osname = (char *) "98"; osname = "98";
break; break;
case 90: case 90:
osname = (char *) "ME"; osname = "ME";
break; break;
default: default:
osname = (char *) "9X"; osname = "9X";
break; break;
} }
break; break;
case VER_PLATFORM_WIN32_NT: case VER_PLATFORM_WIN32_NT:
is_nt = true; is_nt = true;
if (osversion.dwMajorVersion == 5) if (osversion.dwMajorVersion == 6)
osname = "Longhorn/Vista (not yet supported!)";
else if (osversion.dwMajorVersion == 5)
{ {
BOOL more_info = FALSE; BOOL more_info = FALSE;
OSVERSIONINFOEX osversionex; OSVERSIONINFOEX osversionex;
@ -1080,64 +1082,91 @@ dump_sysinfo ()
if (osversion.dwMinorVersion == 0) if (osversion.dwMinorVersion == 0)
{ {
if (!more_info) if (!more_info)
osname = (char *) "2000"; osname = "2000";
else if (osversionex.wProductType == VER_NT_SERVER else if (osversionex.wProductType == VER_NT_SERVER
|| osversionex.wProductType == VER_NT_DOMAIN_CONTROLLER) || osversionex.wProductType == VER_NT_DOMAIN_CONTROLLER)
{ {
if (osversionex.wSuiteMask & VER_SUITE_DATACENTER) if (osversionex.wSuiteMask & VER_SUITE_DATACENTER)
osname = (char *) "2000 Datacenter Server"; osname = "2000 Datacenter Server";
else if (osversionex.wSuiteMask & VER_SUITE_ENTERPRISE) else if (osversionex.wSuiteMask & VER_SUITE_ENTERPRISE)
osname = (char *) "2000 Advanced Server"; osname = "2000 Advanced Server";
else else
osname = (char *) "2000 Server"; osname = "2000 Server";
} }
else else
osname = (char *) "2000 Professional"; osname = "2000 Professional";
} }
else if (osversion.dwMinorVersion == 1) else if (osversion.dwMinorVersion == 1)
{ {
if (GetSystemMetrics (SM_MEDIACENTER)) if (GetSystemMetrics (SM_MEDIACENTER))
osname = (char *) "XP Media Center Edition"; osname = "XP Media Center Edition";
else if (GetSystemMetrics (SM_TABLETPC)) else if (GetSystemMetrics (SM_TABLETPC))
osname = (char *) "XP Tablet PC Edition"; osname = "XP Tablet PC Edition";
else if (!more_info) else if (!more_info)
osname = (char *) "XP"; osname = "XP";
else if (osversionex.wSuiteMask & VER_SUITE_PERSONAL) else if (osversionex.wSuiteMask & VER_SUITE_PERSONAL)
osname = (char *) "XP Home Edition"; osname = "XP Home Edition";
else else
osname = (char *) "XP Professional"; osname = "XP Professional";
} }
else if (osversion.dwMinorVersion == 2) else if (osversion.dwMinorVersion == 2)
{ {
if (!more_info) if (!more_info)
osname = (char *) "2003 Server"; osname = "2003 Server";
else if (osversionex.wSuiteMask & VER_SUITE_BLADE) else if (osversionex.wSuiteMask & VER_SUITE_BLADE)
osname = (char *) "2003 Web Server"; osname = "2003 Web Server";
else if (osversionex.wSuiteMask & VER_SUITE_DATACENTER) else if (osversionex.wSuiteMask & VER_SUITE_DATACENTER)
osname = (char *) "2003 Datacenter Server"; osname = "2003 Datacenter Server";
else if (osversionex.wSuiteMask & VER_SUITE_ENTERPRISE) else if (osversionex.wSuiteMask & VER_SUITE_ENTERPRISE)
osname = (char *) "2003 Enterprise Server"; osname = "2003 Enterprise Server";
else else
osname = (char *) "2003 Server"; osname = "2003 Server";
} }
} }
else else
osname = (char *) "NT"; osname = "NT";
break; break;
default: default:
osname = (char *) "??"; osname = "??";
break; break;
} }
printf ("Windows %s Ver %lu.%lu Build %lu %s\n\n", osname, printf ("Windows %s Ver %lu.%lu Build %lu %s\n", osname,
osversion.dwMajorVersion, osversion.dwMinorVersion, osversion.dwMajorVersion, osversion.dwMinorVersion,
osversion.dwPlatformId == VER_PLATFORM_WIN32_NT ? osversion.dwPlatformId == VER_PLATFORM_WIN32_NT ?
osversion.dwBuildNumber : (osversion.dwBuildNumber & 0xffff), osversion.dwBuildNumber : (osversion.dwBuildNumber & 0xffff),
osversion.dwPlatformId == VER_PLATFORM_WIN32_NT ? osversion.dwPlatformId == VER_PLATFORM_WIN32_NT ?
osversion.szCSDVersion : ""); osversion.szCSDVersion : "");
if (GetSystemMetrics (SM_REMOTESESSION))
printf ("Running in Terminal Service session\n\n");
printf ("Path:"); HINSTANCE k32 = LoadLibrary ("kernel32.dll");
BOOL (WINAPI *wow64_func) (HANDLE, PBOOL) = (BOOL (WINAPI *) (HANDLE, PBOOL))
GetProcAddress (k32, "IsWow64Process");
BOOL is_wow64 = FALSE;
if (wow64_func && wow64_func (GetCurrentProcess (), &is_wow64) && is_wow64)
{
void (WINAPI *nativinfo) (LPSYSTEM_INFO) = (void (WINAPI *)
(LPSYSTEM_INFO)) GetProcAddress (k32, "GetNativeSystemInfo");
SYSTEM_INFO natinfo;
nativinfo (&natinfo);
fputs ("\nRunning under WOW64 on ", stdout);
switch (natinfo.wProcessorArchitecture)
{
case PROCESSOR_ARCHITECTURE_IA64:
puts ("IA64");
break;
case PROCESSOR_ARCHITECTURE_AMD64:
puts ("AMD64");
break;
default:
puts("??");
break;
}
}
if (GetSystemMetrics (SM_REMOTESESSION))
printf ("\nRunning in Terminal Service session\n");
printf ("\nPath:");
char *s = getenv ("PATH"), *e; char *s = getenv ("PATH"), *e;
if (!s) if (!s)
puts (""); puts ("");
@ -1259,7 +1288,6 @@ dump_sysinfo ()
SetErrorMode (SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX); SetErrorMode (SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX);
int drivemask = GetLogicalDrives (); int drivemask = GetLogicalDrives ();
HINSTANCE k32 = LoadLibrary ("kernel32.dll");
BOOL (WINAPI * gdfse) (LPCSTR, long long *, long long *, long long *) = BOOL (WINAPI * gdfse) (LPCSTR, long long *, long long *, long long *) =
(BOOL (WINAPI *) (LPCSTR, long long *, long long *, long long *)) (BOOL (WINAPI *) (LPCSTR, long long *, long long *, long long *))
GetProcAddress (k32, "GetDiskFreeSpaceExA"); GetProcAddress (k32, "GetDiskFreeSpaceExA");