7474#include "zend_dtrace.h"
7575#include "zend_observer.h"
7676#include "zend_system_id.h"
77+ #include "zend_smart_string.h"
7778
7879#include "php_content_types.h"
7980#include "php_ticks.h"
@@ -99,20 +100,30 @@ PHPAPI size_t core_globals_offset;
99100
100101const char php_build_date [] = __DATE__ " " __TIME__ ;
101102
102- PHPAPI const char * php_version (void )
103+ ZEND_ATTRIBUTE_CONST PHPAPI const char * php_version (void )
103104{
104105 return PHP_VERSION ;
105106}
106107
107- PHPAPI unsigned int php_version_id (void )
108+ ZEND_ATTRIBUTE_CONST PHPAPI unsigned int php_version_id (void )
108109{
109110 return PHP_VERSION_ID ;
110111}
111112
113+ ZEND_ATTRIBUTE_CONST PHPAPI const char * php_build_provider (void )
114+ {
115+ #ifdef PHP_BUILD_PROVIDER
116+ return PHP_BUILD_PROVIDER ;
117+ #else
118+ return NULL ;
119+ #endif
120+ }
121+
112122PHPAPI char * php_get_version (sapi_module_struct * sapi_module )
113123{
114- char * version_info ;
115- spprintf (& version_info , 0 , "PHP %s (%s) (built: %s) (%s)\nCopyright (c) The PHP Group\n%s%s" ,
124+ smart_string version_info = {0 };
125+ smart_string_append_printf (& version_info ,
126+ "PHP %s (%s) (built: %s) (%s)\n" ,
116127 PHP_VERSION , sapi_module -> name , php_build_date ,
117128#ifdef ZTS
118129 "ZTS"
@@ -131,16 +142,15 @@ PHPAPI char *php_get_version(sapi_module_struct *sapi_module)
131142#ifdef HAVE_GCOV
132143 " GCOV"
133144#endif
134- ,
135- #ifdef PHP_BUILD_PROVIDER
136- "Built by " PHP_BUILD_PROVIDER "\n"
137- #else
138- ""
139- #endif
140- ,
141- get_zend_version ()
142145 );
143- return version_info ;
146+ smart_string_appends (& version_info , "Copyright (c) The PHP Group\n" );
147+ if (php_build_provider ()) {
148+ smart_string_append_printf (& version_info , "Built by %s\n" , php_build_provider ());
149+ }
150+ smart_string_appends (& version_info , get_zend_version ());
151+ smart_string_0 (& version_info );
152+
153+ return version_info .c ;
144154}
145155
146156PHPAPI void php_print_version (sapi_module_struct * sapi_module )
0 commit comments