/***************************************************************** Returns an uname like string for windows *****************************************************************/ static char *win_uname() { static char uname_buf[256]; char cpuname[16]; char *osname; SYSTEM_INFO sysinfo; OSVERSIONINFO osvi; osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&osvi); switch (osvi.dwPlatformId) { case VER_PLATFORM_WIN32s: osname = "Win32s"; break; case VER_PLATFORM_WIN32_WINDOWS: osname = "Win32"; if (osvi.dwMajorVersion == 4) { switch (osvi.dwMinorVersion) { case 0: osname = "Win95"; break; case 10: osname = "Win98"; break; case 90: osname = "WinME"; break; default: break; } } break; case VER_PLATFORM_WIN32_NT: osname = "WinNT"; if (osvi.dwMajorVersion == 5) { switch (osvi.dwMinorVersion) { case 0: osname = "Win2000"; break; case 1: osname = "WinXP"; break; default: break; } } break; default: osname = osvi.szCSDVersion; break; } GetSystemInfo(&sysinfo); switch (sysinfo.wProcessorArchitecture) { case PROCESSOR_ARCHITECTURE_INTEL: { unsigned int ptype; if (sysinfo.wProcessorLevel < 3) /* Shouldn't happen. */ ptype = 3; else if (sysinfo.wProcessorLevel > 9) /* P4 */ ptype = 6; else ptype = sysinfo.wProcessorLevel; my_snprintf(cpuname, sizeof(cpuname), "i%d86", ptype); } break; case PROCESSOR_ARCHITECTURE_MIPS: sz_strlcpy(cpuname, "mips"); break; case PROCESSOR_ARCHITECTURE_ALPHA: sz_strlcpy(cpuname, "alpha"); break; case PROCESSOR_ARCHITECTURE_PPC: sz_strlcpy(cpuname, "ppc"); break; case PROCESSOR_ARCHITECTURE_IA64: sz_strlcpy(cpuname, "ia64"); break; default: sz_strlcpy(cpuname, "unknown"); break; } my_snprintf(uname_buf, sizeof(uname_buf), "%s %ld.%ld [%s]", osname, osvi.dwMajorVersion, osvi.dwMinorVersion, cpuname); return uname_buf; }