@@ -237,6 +237,54 @@ static zend_object *curl_clone_obj(zend_object *object);
237237php_curl * init_curl_handle_into_zval (zval * curl );
238238static inline zend_result build_mime_structure_from_hash (php_curl * ch , zval * zpostfields );
239239
240+ struct php_curl_feature {
241+ const char * name ;
242+ int bitmask ;
243+ };
244+
245+ /* To update on each new cURL release using src/main.c in cURL sources */
246+ static const struct php_curl_feature php_curl_features [] = {
247+ { "AsynchDNS" , CURL_VERSION_ASYNCHDNS },
248+ { "CharConv" , CURL_VERSION_CONV },
249+ { "Debug" , CURL_VERSION_DEBUG },
250+ { "GSS-Negotiate" , CURL_VERSION_GSSNEGOTIATE },
251+ { "IDN" , CURL_VERSION_IDN },
252+ { "IPv6" , CURL_VERSION_IPV6 },
253+ { "krb4" , CURL_VERSION_KERBEROS4 },
254+ { "Largefile" , CURL_VERSION_LARGEFILE },
255+ { "libz" , CURL_VERSION_LIBZ },
256+ { "NTLM" , CURL_VERSION_NTLM },
257+ { "NTLMWB" , CURL_VERSION_NTLM_WB },
258+ { "SPNEGO" , CURL_VERSION_SPNEGO },
259+ { "SSL" , CURL_VERSION_SSL },
260+ { "SSPI" , CURL_VERSION_SSPI },
261+ { "TLS-SRP" , CURL_VERSION_TLSAUTH_SRP },
262+ { "HTTP2" , CURL_VERSION_HTTP2 },
263+ { "GSSAPI" , CURL_VERSION_GSSAPI },
264+ { "KERBEROS5" , CURL_VERSION_KERBEROS5 },
265+ { "UNIX_SOCKETS" , CURL_VERSION_UNIX_SOCKETS },
266+ { "PSL" , CURL_VERSION_PSL },
267+ { "HTTPS_PROXY" , CURL_VERSION_HTTPS_PROXY },
268+ { "MULTI_SSL" , CURL_VERSION_MULTI_SSL },
269+ { "BROTLI" , CURL_VERSION_BROTLI },
270+ #if LIBCURL_VERSION_NUM >= 0x074001 /* Available since 7.64.1 */
271+ { "ALTSVC" , CURL_VERSION_ALTSVC },
272+ #endif
273+ #if LIBCURL_VERSION_NUM >= 0x074200 /* Available since 7.66.0 */
274+ { "HTTP3" , CURL_VERSION_HTTP3 },
275+ #endif
276+ #if LIBCURL_VERSION_NUM >= 0x074800 /* Available since 7.72.0 */
277+ { "UNICODE" , CURL_VERSION_UNICODE },
278+ { "ZSTD" , CURL_VERSION_ZSTD },
279+ #endif
280+ #if LIBCURL_VERSION_NUM >= 0x074a00 /* Available since 7.74.0 */
281+ { "HSTS" , CURL_VERSION_HSTS },
282+ #endif
283+ #if LIBCURL_VERSION_NUM >= 0x074c00 /* Available since 7.76.0 */
284+ { "GSASL" , CURL_VERSION_GSASL },
285+ #endif
286+ };
287+
240288/* {{{ PHP_INI_BEGIN */
241289PHP_INI_BEGIN ()
242290 PHP_INI_ENTRY ("curl.cainfo" , "" , PHP_INI_SYSTEM , NULL )
@@ -258,64 +306,12 @@ PHP_MINFO_FUNCTION(curl)
258306 snprintf (str , sizeof (str ), "%d" , d -> age );
259307 php_info_print_table_row (2 , "Age" , str );
260308
261- /* To update on each new cURL release using src/main.c in cURL sources */
262- /* make sure to sync this list with curl_version as well */
263309 if (d -> features ) {
264- struct feat {
265- const char * name ;
266- int bitmask ;
267- };
268-
269310 unsigned int i ;
270311
271- static const struct feat feats [] = {
272- {"AsynchDNS" , CURL_VERSION_ASYNCHDNS },
273- {"CharConv" , CURL_VERSION_CONV },
274- {"Debug" , CURL_VERSION_DEBUG },
275- {"GSS-Negotiate" , CURL_VERSION_GSSNEGOTIATE },
276- {"IDN" , CURL_VERSION_IDN },
277- {"IPv6" , CURL_VERSION_IPV6 },
278- {"krb4" , CURL_VERSION_KERBEROS4 },
279- {"Largefile" , CURL_VERSION_LARGEFILE },
280- {"libz" , CURL_VERSION_LIBZ },
281- {"NTLM" , CURL_VERSION_NTLM },
282- {"NTLMWB" , CURL_VERSION_NTLM_WB },
283- {"SPNEGO" , CURL_VERSION_SPNEGO },
284- {"SSL" , CURL_VERSION_SSL },
285- {"SSPI" , CURL_VERSION_SSPI },
286- {"TLS-SRP" , CURL_VERSION_TLSAUTH_SRP },
287- {"HTTP2" , CURL_VERSION_HTTP2 },
288- {"GSSAPI" , CURL_VERSION_GSSAPI },
289- {"KERBEROS5" , CURL_VERSION_KERBEROS5 },
290- {"UNIX_SOCKETS" , CURL_VERSION_UNIX_SOCKETS },
291- {"PSL" , CURL_VERSION_PSL },
292- {"HTTPS_PROXY" , CURL_VERSION_HTTPS_PROXY },
293- {"MULTI_SSL" , CURL_VERSION_MULTI_SSL },
294- {"BROTLI" , CURL_VERSION_BROTLI },
295- #if LIBCURL_VERSION_NUM >= 0x074001 /* Available since 7.64.1 */
296- {"ALTSVC" , CURL_VERSION_ALTSVC },
297- #endif
298- #if LIBCURL_VERSION_NUM >= 0x074200 /* Available since 7.66.0 */
299- {"HTTP3" , CURL_VERSION_HTTP3 },
300- #endif
301- #if LIBCURL_VERSION_NUM >= 0x074800 /* Available since 7.72.0 */
302- {"UNICODE" , CURL_VERSION_UNICODE },
303- {"ZSTD" , CURL_VERSION_ZSTD },
304- #endif
305- #if LIBCURL_VERSION_NUM >= 0x074a00 /* Available since 7.74.0 */
306- {"HSTS" , CURL_VERSION_HSTS },
307- #endif
308- #if LIBCURL_VERSION_NUM >= 0x074c00 /* Available since 7.76.0 */
309- {"GSASL" , CURL_VERSION_GSASL },
310- #endif
311- {NULL , 0 }
312- };
313-
314312 php_info_print_table_row (1 , "Features" );
315- for (i = 0 ; i < sizeof (feats )/sizeof (feats [0 ]); i ++ ) {
316- if (feats [i ].name ) {
317- php_info_print_table_row (2 , feats [i ].name , d -> features & feats [i ].bitmask ? "Yes" : "No" );
318- }
313+ for (i = 0 ; i < sizeof (php_curl_features ) / sizeof (php_curl_features [0 ]); i ++ ) {
314+ php_info_print_table_row (2 , php_curl_features [i ].name , d -> features & php_curl_features [i ].bitmask ? "Yes" : "No" );
319315 }
320316 }
321317
@@ -1013,62 +1009,12 @@ PHP_FUNCTION(curl_version)
10131009 CAAL ("features" , d -> features );
10141010 /* Add an array of features */
10151011 {
1016- struct feat {
1017- const char * name ;
1018- int bitmask ;
1019- };
1020-
10211012 unsigned int i ;
10221013 zval feature_list ;
1023- array_init (& feature_list );
1024-
1025- /* Sync this list with PHP_MINFO_FUNCTION(curl) as well */
1026- static const struct feat feats [] = {
1027- {"AsynchDNS" , CURL_VERSION_ASYNCHDNS },
1028- {"CharConv" , CURL_VERSION_CONV },
1029- {"Debug" , CURL_VERSION_DEBUG },
1030- {"GSS-Negotiate" , CURL_VERSION_GSSNEGOTIATE },
1031- {"IDN" , CURL_VERSION_IDN },
1032- {"IPv6" , CURL_VERSION_IPV6 },
1033- {"krb4" , CURL_VERSION_KERBEROS4 },
1034- {"Largefile" , CURL_VERSION_LARGEFILE },
1035- {"libz" , CURL_VERSION_LIBZ },
1036- {"NTLM" , CURL_VERSION_NTLM },
1037- {"NTLMWB" , CURL_VERSION_NTLM_WB },
1038- {"SPNEGO" , CURL_VERSION_SPNEGO },
1039- {"SSL" , CURL_VERSION_SSL },
1040- {"SSPI" , CURL_VERSION_SSPI },
1041- {"TLS-SRP" , CURL_VERSION_TLSAUTH_SRP },
1042- {"HTTP2" , CURL_VERSION_HTTP2 },
1043- {"GSSAPI" , CURL_VERSION_GSSAPI },
1044- {"KERBEROS5" , CURL_VERSION_KERBEROS5 },
1045- {"UNIX_SOCKETS" , CURL_VERSION_UNIX_SOCKETS },
1046- {"PSL" , CURL_VERSION_PSL },
1047- {"HTTPS_PROXY" , CURL_VERSION_HTTPS_PROXY },
1048- {"MULTI_SSL" , CURL_VERSION_MULTI_SSL },
1049- {"BROTLI" , CURL_VERSION_BROTLI },
1050- #if LIBCURL_VERSION_NUM >= 0x074001 /* Available since 7.64.1 */
1051- {"ALTSVC" , CURL_VERSION_ALTSVC },
1052- #endif
1053- #if LIBCURL_VERSION_NUM >= 0x074200 /* Available since 7.66.0 */
1054- {"HTTP3" , CURL_VERSION_HTTP3 },
1055- #endif
1056- #if LIBCURL_VERSION_NUM >= 0x074800 /* Available since 7.72.0 */
1057- {"UNICODE" , CURL_VERSION_UNICODE },
1058- {"ZSTD" , CURL_VERSION_ZSTD },
1059- #endif
1060- #if LIBCURL_VERSION_NUM >= 0x074a00 /* Available since 7.74.0 */
1061- {"HSTS" , CURL_VERSION_HSTS },
1062- #endif
1063- #if LIBCURL_VERSION_NUM >= 0x074c00 /* Available since 7.76.0 */
1064- {"GSASL" , CURL_VERSION_GSASL },
1065- #endif
1066- };
10671014
1068- for (i = 0 ; i < sizeof (feats ) / sizeof (feats [0 ]); i ++ ) {
1069- if (feats [i ].name ) {
1070- add_assoc_bool (& feature_list , feats [i ].name , d -> features & feats [i ].bitmask ? true : false);
1071- }
1015+ array_init_size (& feature_list , sizeof (php_curl_features ) / sizeof (php_curl_features [0 ]));
1016+ for (i = 0 ; i < sizeof (php_curl_features ) / sizeof (php_curl_features [0 ]); i ++ ) {
1017+ add_assoc_bool (& feature_list , php_curl_features [i ].name , d -> features & php_curl_features [i ].bitmask ? true : false);
10721018 }
10731019
10741020 CAAZ ("feature_list" , & feature_list );
0 commit comments