Fix the setting of computer name and processor type for php_uname() on Win32

This commit is contained in:
Frank M. Kromann 2003-01-28 05:02:12 +00:00
parent 9a0f98869c
commit 0e38fedcd7

View file

@ -211,6 +211,12 @@ PHPAPI char *php_get_uname(char mode)
DWORD dwVersion = GetVersion(); DWORD dwVersion = GetVersion();
DWORD dwWindowsMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion))); DWORD dwWindowsMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
DWORD dwWindowsMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion))); DWORD dwWindowsMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
DWORD dwSize = MAX_COMPUTERNAME_LENGTH + 1;
char ComputerName[MAX_COMPUTERNAME_LENGTH + 1];
SYSTEM_INFO SysInfo;
GetComputerName(ComputerName, &dwSize);
GetSystemInfo(&SysInfo);
if (mode == 's') { if (mode == 's') {
if (dwVersion < 0x80000000) { if (dwVersion < 0x80000000) {
@ -222,25 +228,57 @@ PHPAPI char *php_get_uname(char mode)
snprintf(tmp_uname, sizeof(tmp_uname), "%d.%d", dwWindowsMajorVersion, dwWindowsMinorVersion); snprintf(tmp_uname, sizeof(tmp_uname), "%d.%d", dwWindowsMajorVersion, dwWindowsMinorVersion);
php_uname = tmp_uname; php_uname = tmp_uname;
} else if (mode == 'n') { } else if (mode == 'n') {
/* XXX HOW TO GET THIS ON WINDOWS? */ php_uname = ComputerName;
php_uname = "localhost";
} else if (mode == 'v') { } else if (mode == 'v') {
dwBuild = (DWORD)(HIWORD(dwVersion)); dwBuild = (DWORD)(HIWORD(dwVersion));
snprintf(tmp_uname, sizeof(tmp_uname), "build %d", dwBuild); snprintf(tmp_uname, sizeof(tmp_uname), "build %d", dwBuild);
php_uname = tmp_uname; php_uname = tmp_uname;
} else if (mode == 'm') { } else if (mode == 'm') {
/* XXX HOW TO GET THIS ON WINDOWS? */ switch (SysInfo.wProcessorArchitecture) {
php_uname = "i386"; case PROCESSOR_ARCHITECTURE_INTEL :
snprintf(tmp_uname, sizeof(tmp_uname), "i%d", SysInfo.dwProcessorType);
php_uname = tmp_uname;
break;
case PROCESSOR_ARCHITECTURE_MIPS :
php_uname = "MIPS R4000";
php_uname = tmp_uname;
break;
case PROCESSOR_ARCHITECTURE_ALPHA :
snprintf(tmp_uname, sizeof(tmp_uname), "Alpha %d", SysInfo.wProcessorLevel);
php_uname = tmp_uname;
break;
case PROCESSOR_ARCHITECTURE_PPC :
snprintf(tmp_uname, sizeof(tmp_uname), "PPC 6%02d", SysInfo.wProcessorLevel);
php_uname = tmp_uname;
break;
case PROCESSOR_ARCHITECTURE_IA64 :
php_uname = "IA64";
break;
#if defined(PROCESSOR_ARCHITECTURE_IA32_ON_WIN64)
case PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 :
php_uname = "IA32";
break;
#endif
#if defined(PROCESSOR_ARCHITECTURE_AMD64)
case PROCESSOR_ARCHITECTURE_AMD64 :
php_uname = "AMD64";
break;
#endif
case PROCESSOR_ARCHITECTURE_UNKNOWN :
default :
php_uname = "Unknown";
break;
}
} else { /* assume mode == 'a' */ } else { /* assume mode == 'a' */
/* Get build numbers for Windows NT or Win95 */ /* Get build numbers for Windows NT or Win95 */
if (dwVersion < 0x80000000){ if (dwVersion < 0x80000000){
dwBuild = (DWORD)(HIWORD(dwVersion)); dwBuild = (DWORD)(HIWORD(dwVersion));
snprintf(tmp_uname, sizeof(tmp_uname), "%s %s %d.%d build %d", snprintf(tmp_uname, sizeof(tmp_uname), "%s %s %d.%d build %d",
"Windows NT", "localhost", "Windows NT", ComputerName,
dwWindowsMajorVersion, dwWindowsMinorVersion, dwBuild); dwWindowsMajorVersion, dwWindowsMinorVersion, dwBuild);
} else { } else {
snprintf(tmp_uname, sizeof(tmp_uname), "%s %s %d.%d", snprintf(tmp_uname, sizeof(tmp_uname), "%s %s %d.%d",
"Windows 9x", "localhost", "Windows 9x", ComputerName,
dwWindowsMajorVersion, dwWindowsMinorVersion); dwWindowsMajorVersion, dwWindowsMinorVersion);
} }
php_uname = tmp_uname; php_uname = tmp_uname;