Commit: 4b4f3db73142799da71be14d73938456e918b3ac Author: Pierrick Charron <pierr...@php.net> Sun, 23 Dec 2012 15:45:39 -0500 Parents: 64595a5d1a51417ae518e124c61e1a9840d221a8 Branches: PHP-5.5 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=4b4f3db73142799da71be14d73938456e918b3ac Log: Support for curl_strerror and curl_multi_strerror Add the support for both curl_strerror and curl_multi_strerror. Those function will return a string describing the error code passed in the argument errornum Changed paths: M ext/curl/interface.c M ext/curl/multi.c M ext/curl/php_curl.h A ext/curl/tests/curl_multi_strerror_001.phpt A ext/curl/tests/curl_strerror_001.phpt Diff: diff --git a/ext/curl/interface.c b/ext/curl/interface.c index a0a4ec5..21d4bb1 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -374,6 +374,16 @@ ZEND_BEGIN_ARG_INFO(arginfo_curl_multi_close, 0) ZEND_ARG_INFO(0, mh) ZEND_END_ARG_INFO() +#if LIBCURL_VERSION_NUM >= 0x070c00 /* Available since 7.12.0 */ +ZEND_BEGIN_ARG_INFO(arginfo_curl_strerror, 0) + ZEND_ARG_INFO(0, errornum) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO(arginfo_curl_multi_strerror, 0) + ZEND_ARG_INFO(0, errornum) +ZEND_END_ARG_INFO() +#endif + ZEND_BEGIN_ARG_INFO(arginfo_curl_share_init, 0) ZEND_END_ARG_INFO() @@ -401,6 +411,10 @@ const zend_function_entry curl_functions[] = { PHP_FE(curl_error, arginfo_curl_error) PHP_FE(curl_errno, arginfo_curl_errno) PHP_FE(curl_close, arginfo_curl_close) +#if LIBCURL_VERSION_NUM >= 0x070c00 /* 7.12.0 */ + PHP_FE(curl_strerror, arginfo_curl_strerror) + PHP_FE(curl_multi_strerror, arginfo_curl_multi_strerror) +#endif #if LIBCURL_VERSION_NUM >= 0x070c01 /* 7.12.1 */ PHP_FE(curl_reset, arginfo_curl_reset) #endif @@ -3256,6 +3270,28 @@ static void _php_curl_close(zend_rsrc_list_entry *rsrc TSRMLS_DC) } /* }}} */ +#if LIBCURL_VERSION_NUM >= 0x070c00 /* Available since 7.12.0 */ +/* {{{ proto bool curl_strerror(int code) + return string describing error code */ +PHP_FUNCTION(curl_strerror) +{ + long code; + const char *str; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &code) == FAILURE) { + return; + } + + str = curl_easy_strerror(code); + if (str) { + RETURN_STRING(str, 1); + } else { + RETURN_NULL(); + } +} +/* }}} */ +#endif + #if LIBCURL_VERSION_NUM >= 0x070c01 /* 7.12.1 */ /* {{{ _php_curl_reset_handlers() Reset all handlers of a given php_curl */ @@ -3280,7 +3316,7 @@ static void _php_curl_reset_handlers(php_curl *ch) ch->handlers->read->stream = NULL; } ch->handlers->read->fp = NULL; - ch->handlers->read->fd = NULL; + ch->handlers->read->fd = 0; ch->handlers->read->method = PHP_CURL_DIRECT; if (ch->handlers->std_err) { diff --git a/ext/curl/multi.c b/ext/curl/multi.c index 48655ba..4cf9d5f 100644 --- a/ext/curl/multi.c +++ b/ext/curl/multi.c @@ -359,6 +359,28 @@ void _php_curl_multi_close(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ */ } /* }}} */ +#if LIBCURL_VERSION_NUM >= 0x070c00 /* Available since 7.12.0 */ +/* {{{ proto bool curl_multi_strerror(int code) + return string describing error code */ +PHP_FUNCTION(curl_multi_strerror) +{ + long code; + const char *str; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &code) == FAILURE) { + return; + } + + str = curl_multi_strerror(code); + if (str) { + RETURN_STRING(str, 1); + } else { + RETURN_NULL(); + } +} +/* }}} */ +#endif + #if LIBCURL_VERSION_NUM >= 0x070f04 /* 7.15.4 */ static int _php_curl_multi_setopt(php_curlm *mh, long option, zval **zvalue, zval *return_value TSRMLS_DC) /* {{{ */ { @@ -389,7 +411,6 @@ static int _php_curl_multi_setopt(php_curlm *mh, long option, zval **zvalue, zva } /* }}} */ - /* {{{ proto int curl_multi_setopt(resource mh, int option, mixed value) Set an option for the curl multi handle */ PHP_FUNCTION(curl_multi_setopt) diff --git a/ext/curl/php_curl.h b/ext/curl/php_curl.h index d00b431..2c97bca 100644 --- a/ext/curl/php_curl.h +++ b/ext/curl/php_curl.h @@ -84,6 +84,11 @@ PHP_FUNCTION(curl_share_close); PHP_FUNCTION(curl_share_init); PHP_FUNCTION(curl_share_setopt); +#if LIBCURL_VERSION_NUM >= 0x070c00 /* 7.12.0 */ +PHP_FUNCTION(curl_strerror); +PHP_FUNCTION(curl_multi_strerror); +#endif + #if LIBCURL_VERSION_NUM >= 0x070c01 /* 7.12.1 */ PHP_FUNCTION(curl_reset); #endif diff --git a/ext/curl/tests/curl_multi_strerror_001.phpt b/ext/curl/tests/curl_multi_strerror_001.phpt new file mode 100644 index 0000000..85a665c --- /dev/null +++ b/ext/curl/tests/curl_multi_strerror_001.phpt @@ -0,0 +1,20 @@ +--TEST-- +curl_multi_strerror basic test +--SKIPIF-- +if (!extension_loaded("curl")) { + exit("skip curl extension not loaded"); +} +$curl_version = curl_version(); +if ($curl_version['version_number'] < 0x070c00) { + exit("skip: test works only with curl >= 7.12.0"); +} +--FILE-- +<?php + +var_dump(curl_multi_strerror(CURLM_OK)); +var_dump(curl_multi_strerror(CURLM_BAD_HANDLE)); + +?> +--EXPECTF-- +string(8) "No error" +string(20) "Invalid multi handle" diff --git a/ext/curl/tests/curl_strerror_001.phpt b/ext/curl/tests/curl_strerror_001.phpt new file mode 100644 index 0000000..c61481b --- /dev/null +++ b/ext/curl/tests/curl_strerror_001.phpt @@ -0,0 +1,22 @@ +--TEST-- +curl_strerror basic test +--SKIPIF-- +if (!extension_loaded("curl")) { + exit("skip curl extension not loaded"); +} +$curl_version = curl_version(); +if ($curl_version['version_number'] < 0x070c00) { + exit("skip: test works only with curl >= 7.12.0"); +} +--FILE-- +<?php + +var_dump(curl_strerror(CURLE_OK)); +var_dump(curl_strerror(CURLE_UNSUPPORTED_PROTOCOL)); +var_dump(curl_strerror(-1)); + +?> +--EXPECTF-- +string(8) "No error" +string(20) "Unsupported protocol" +string(13) "Unknown error" -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php