mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
ext/standard/info.c: Minor refactoring to php_get_uname()
This commit is contained in:
parent
ac7ed28573
commit
d63caf006b
1 changed files with 13 additions and 21 deletions
|
@ -660,8 +660,8 @@ static void php_get_windows_cpu(char *buf, size_t bufsize)
|
||||||
PHPAPI zend_string *php_get_uname(char mode)
|
PHPAPI zend_string *php_get_uname(char mode)
|
||||||
{
|
{
|
||||||
char *php_uname;
|
char *php_uname;
|
||||||
char tmp_uname[256];
|
|
||||||
#ifdef PHP_WIN32
|
#ifdef PHP_WIN32
|
||||||
|
char tmp_uname[256];
|
||||||
DWORD dwBuild=0;
|
DWORD dwBuild=0;
|
||||||
DWORD dwVersion = GetVersion();
|
DWORD dwVersion = GetVersion();
|
||||||
DWORD dwWindowsMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
|
DWORD dwWindowsMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
|
||||||
|
@ -674,21 +674,18 @@ PHPAPI zend_string *php_get_uname(char mode)
|
||||||
if (mode == 's') {
|
if (mode == 's') {
|
||||||
php_uname = "Windows NT";
|
php_uname = "Windows NT";
|
||||||
} else if (mode == 'r') {
|
} else if (mode == 'r') {
|
||||||
snprintf(tmp_uname, sizeof(tmp_uname), "%d.%d", dwWindowsMajorVersion, dwWindowsMinorVersion);
|
return strpprintf(0, "%d.%d", dwWindowsMajorVersion, dwWindowsMinorVersion);
|
||||||
php_uname = tmp_uname;
|
|
||||||
} else if (mode == 'n') {
|
} else if (mode == 'n') {
|
||||||
php_uname = ComputerName;
|
php_uname = ComputerName;
|
||||||
} else if (mode == 'v') {
|
} else if (mode == 'v') {
|
||||||
char *winver = php_get_windows_name();
|
char *winver = php_get_windows_name();
|
||||||
dwBuild = (DWORD)(HIWORD(dwVersion));
|
dwBuild = (DWORD)(HIWORD(dwVersion));
|
||||||
if(winver == NULL) {
|
if (winver == NULL) {
|
||||||
snprintf(tmp_uname, sizeof(tmp_uname), "build %d", dwBuild);
|
return strpprintf(0, "build %d", dwBuild);
|
||||||
} else {
|
} else {
|
||||||
snprintf(tmp_uname, sizeof(tmp_uname), "build %d (%s)", dwBuild, winver);
|
zend_string *build_with_version = strpprintf(0, "build %d (%s)", dwBuild, winver);
|
||||||
}
|
|
||||||
php_uname = tmp_uname;
|
|
||||||
if(winver) {
|
|
||||||
efree(winver);
|
efree(winver);
|
||||||
|
return build_with_version;
|
||||||
}
|
}
|
||||||
} else if (mode == 'm') {
|
} else if (mode == 'm') {
|
||||||
php_get_windows_cpu(tmp_uname, sizeof(tmp_uname));
|
php_get_windows_cpu(tmp_uname, sizeof(tmp_uname));
|
||||||
|
@ -704,18 +701,16 @@ PHPAPI zend_string *php_get_uname(char mode)
|
||||||
|
|
||||||
/* Windows "version" 6.2 could be Windows 8/Windows Server 2012, but also Windows 8.1/Windows Server 2012 R2 */
|
/* Windows "version" 6.2 could be Windows 8/Windows Server 2012, but also Windows 8.1/Windows Server 2012 R2 */
|
||||||
if (dwWindowsMajorVersion == 6 && dwWindowsMinorVersion == 2) {
|
if (dwWindowsMajorVersion == 6 && dwWindowsMinorVersion == 2) {
|
||||||
if (strncmp(winver, "Windows 8.1", 11) == 0 || strncmp(winver, "Windows Server 2012 R2", 22) == 0) {
|
if (strncmp(winver, "Windows 8.1", strlen("Windows 8.1")) == 0 || strncmp(winver, "Windows Server 2012 R2", strlen("Windows Server 2012 R2")) == 0) {
|
||||||
dwWindowsMinorVersion = 3;
|
dwWindowsMinorVersion = 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(tmp_uname, sizeof(tmp_uname), "%s %s %d.%d build %d (%s) %s",
|
zend_string *build_with_all_info = strpprintf(0, "%s %s %d.%d build %d (%s) %s",
|
||||||
"Windows NT", ComputerName,
|
"Windows NT", ComputerName, dwWindowsMajorVersion, dwWindowsMinorVersion, dwBuild,
|
||||||
dwWindowsMajorVersion, dwWindowsMinorVersion, dwBuild, winver?winver:"unknown", wincpu);
|
winver ? winver: "unknown", wincpu);
|
||||||
if(winver) {
|
efree(winver);
|
||||||
efree(winver);
|
return build_with_all_info;
|
||||||
}
|
|
||||||
php_uname = tmp_uname;
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#ifdef HAVE_SYS_UTSNAME_H
|
#ifdef HAVE_SYS_UTSNAME_H
|
||||||
|
@ -734,10 +729,7 @@ PHPAPI zend_string *php_get_uname(char mode)
|
||||||
} else if (mode == 'm') {
|
} else if (mode == 'm') {
|
||||||
php_uname = buf.machine;
|
php_uname = buf.machine;
|
||||||
} else { /* assume mode == 'a' */
|
} else { /* assume mode == 'a' */
|
||||||
snprintf(tmp_uname, sizeof(tmp_uname), "%s %s %s %s %s",
|
return strpprintf(0, "%s %s %s %s %s", buf.sysname, buf.nodename, buf.release, buf.version, buf.machine);
|
||||||
buf.sysname, buf.nodename, buf.release, buf.version,
|
|
||||||
buf.machine);
|
|
||||||
php_uname = tmp_uname;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue