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

Reply via email to