@@ -660,8 +660,8 @@ static void php_get_windows_cpu(char *buf, size_t bufsize)
660
660
PHPAPI zend_string * php_get_uname (char mode )
661
661
{
662
662
char * php_uname ;
663
- char tmp_uname [256 ];
664
663
#ifdef PHP_WIN32
664
+ char tmp_uname [256 ];
665
665
DWORD dwBuild = 0 ;
666
666
DWORD dwVersion = GetVersion ();
667
667
DWORD dwWindowsMajorVersion = (DWORD )(LOBYTE (LOWORD (dwVersion )));
@@ -674,21 +674,18 @@ PHPAPI zend_string *php_get_uname(char mode)
674
674
if (mode == 's' ) {
675
675
php_uname = "Windows NT" ;
676
676
} else if (mode == 'r' ) {
677
- snprintf (tmp_uname , sizeof (tmp_uname ), "%d.%d" , dwWindowsMajorVersion , dwWindowsMinorVersion );
678
- php_uname = tmp_uname ;
677
+ return strpprintf (0 , "%d.%d" , dwWindowsMajorVersion , dwWindowsMinorVersion );
679
678
} else if (mode == 'n' ) {
680
679
php_uname = ComputerName ;
681
680
} else if (mode == 'v' ) {
682
681
char * winver = php_get_windows_name ();
683
682
dwBuild = (DWORD )(HIWORD (dwVersion ));
684
- if (winver == NULL ) {
685
- snprintf ( tmp_uname , sizeof ( tmp_uname ) , "build %d" , dwBuild );
683
+ if (winver == NULL ) {
684
+ return strpprintf ( 0 , "build %d" , dwBuild );
686
685
} else {
687
- snprintf (tmp_uname , sizeof (tmp_uname ), "build %d (%s)" , dwBuild , winver );
688
- }
689
- php_uname = tmp_uname ;
690
- if (winver ) {
686
+ zend_string * build_with_version = strpprintf (0 , "build %d (%s)" , dwBuild , winver );
691
687
efree (winver );
688
+ return build_with_version ;
692
689
}
693
690
} else if (mode == 'm' ) {
694
691
php_get_windows_cpu (tmp_uname , sizeof (tmp_uname ));
@@ -704,18 +701,16 @@ PHPAPI zend_string *php_get_uname(char mode)
704
701
705
702
/* Windows "version" 6.2 could be Windows 8/Windows Server 2012, but also Windows 8.1/Windows Server 2012 R2 */
706
703
if (dwWindowsMajorVersion == 6 && dwWindowsMinorVersion == 2 ) {
707
- if (strncmp (winver , "Windows 8.1" , 11 ) == 0 || strncmp (winver , "Windows Server 2012 R2" , 22 ) == 0 ) {
704
+ if (strncmp (winver , "Windows 8.1" , strlen ( "Windows 8.1" )) == 0 || strncmp (winver , "Windows Server 2012 R2" , strlen ( "Windows Server 2012 R2" ) ) == 0 ) {
708
705
dwWindowsMinorVersion = 3 ;
709
706
}
710
707
}
711
708
712
- snprintf (tmp_uname , sizeof (tmp_uname ), "%s %s %d.%d build %d (%s) %s" ,
713
- "Windows NT" , ComputerName ,
714
- dwWindowsMajorVersion , dwWindowsMinorVersion , dwBuild , winver ?winver :"unknown" , wincpu );
715
- if (winver ) {
716
- efree (winver );
717
- }
718
- php_uname = tmp_uname ;
709
+ zend_string * build_with_all_info = strpprintf (0 , "%s %s %d.%d build %d (%s) %s" ,
710
+ "Windows NT" , ComputerName , dwWindowsMajorVersion , dwWindowsMinorVersion , dwBuild ,
711
+ winver ? winver : "unknown" , wincpu );
712
+ efree (winver );
713
+ return build_with_all_info ;
719
714
}
720
715
#else
721
716
#ifdef HAVE_SYS_UTSNAME_H
@@ -734,10 +729,7 @@ PHPAPI zend_string *php_get_uname(char mode)
734
729
} else if (mode == 'm' ) {
735
730
php_uname = buf .machine ;
736
731
} else { /* assume mode == 'a' */
737
- snprintf (tmp_uname , sizeof (tmp_uname ), "%s %s %s %s %s" ,
738
- buf .sysname , buf .nodename , buf .release , buf .version ,
739
- buf .machine );
740
- php_uname = tmp_uname ;
732
+ return strpprintf (0 , "%s %s %s %s %s" , buf .sysname , buf .nodename , buf .release , buf .version , buf .machine );
741
733
}
742
734
}
743
735
#else
0 commit comments