From 4867864caee22f6e7333a295ad8ef5e709594c9c Mon Sep 17 00:00:00 2001 From: Simon Podlipsky Date: Sun, 18 Aug 2019 14:48:23 +0200 Subject: [PATCH] Add Curl ext PHP stubs Closes GH-4557. --- ext/curl/curl.stub.php | 147 ++++++++++++++++++++++++++++++++++ ext/curl/curl_arginfo.h | 132 ++++++++++++++++++++++++++++++ ext/curl/curl_file.c | 25 ++---- ext/curl/curl_file.stub.php | 24 ++++++ ext/curl/curl_file_arginfo.h | 22 +++++ ext/curl/interface.c | 151 +---------------------------------- 6 files changed, 335 insertions(+), 166 deletions(-) create mode 100644 ext/curl/curl.stub.php create mode 100644 ext/curl/curl_arginfo.h create mode 100644 ext/curl/curl_file.stub.php create mode 100644 ext/curl/curl_file_arginfo.h diff --git a/ext/curl/curl.stub.php b/ext/curl/curl.stub.php new file mode 100644 index 0000000000..f5bd6daacf --- /dev/null +++ b/ext/curl/curl.stub.php @@ -0,0 +1,147 @@ += 0x071200 /* 7.18.0 */ +/** @param resource $handle */ +function curl_pause($handle, int $bitmask): int {} +#endif + +/** @param resource $handle */ +function curl_reset($handle): void {} + +/** + * @param resource $handle + * @param array $options + */ +function curl_setopt_array($handle, array $options): bool {} + + +/** + * @param resource $handle + * @param mixed $value + */ +function curl_setopt($handle, int $option, $value): bool {} + +/** @param resource $share_handle */ +function curl_share_close($share_handle): void {} + +/** @param resource $share_handle */ +function curl_share_errno($share_handle): int {} + +/** @return resource */ +function curl_share_init() {} + +/** @param resource $share_handle */ +function curl_share_setopt($share_handle, int $option, $value): bool {} + +function curl_share_strerror(int $error_number): ?string {} + +function curl_strerror(int $error_number): ?string {} + +/** + * @param resource $handle + * + * @return string|false + */ +function curl_unescape($handle, string $string) {} + +/** @return array|false */ +function curl_version(int $age = UNKNOWN) {} diff --git a/ext/curl/curl_arginfo.h b/ext/curl/curl_arginfo.h new file mode 100644 index 0000000000..561c0a7684 --- /dev/null +++ b/ext/curl/curl_arginfo.h @@ -0,0 +1,132 @@ +/* This is a generated file, edit the .stub.php file instead. */ + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_close, 0, 1, IS_VOID, 0) + ZEND_ARG_INFO(0, handle) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_copy_handle, 0, 0, 1) + ZEND_ARG_INFO(0, handle) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_errno, 0, 1, IS_LONG, 0) + ZEND_ARG_INFO(0, handle) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_error, 0, 1, IS_STRING, 0) + ZEND_ARG_INFO(0, handle) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_escape, 0, 0, 2) + ZEND_ARG_INFO(0, handle) + ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0) +ZEND_END_ARG_INFO() + +#define arginfo_curl_exec arginfo_curl_copy_handle + +ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_curl_file_create, 0, 1, CURLFile, 0) + ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, mimetype, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, postname, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_getinfo, 0, 0, 1) + ZEND_ARG_INFO(0, handle) + ZEND_ARG_TYPE_INFO(0, option, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_init, 0, 0, 0) + ZEND_ARG_TYPE_INFO(0, url, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_add_handle, 0, 2, IS_LONG, 0) + ZEND_ARG_INFO(0, multi_handle) + ZEND_ARG_INFO(0, handle) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_close, 0, 1, IS_VOID, 0) + ZEND_ARG_INFO(0, multi_handle) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_errno, 0, 1, IS_LONG, 0) + ZEND_ARG_INFO(0, multi_handle) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_exec, 0, 2, IS_LONG, 0) + ZEND_ARG_INFO(0, multi_handle) + ZEND_ARG_INFO(1, still_running) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_getcontent, 0, 1, IS_STRING, 1) + ZEND_ARG_INFO(0, multi_handle) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_multi_info_read, 0, 0, 1) + ZEND_ARG_INFO(0, multi_handle) + ZEND_ARG_INFO(1, msgs_in_queue) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_multi_init, 0, 0, 0) +ZEND_END_ARG_INFO() + +#define arginfo_curl_multi_remove_handle arginfo_curl_multi_add_handle + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_select, 0, 1, IS_LONG, 0) + ZEND_ARG_INFO(0, multi_handle) + ZEND_ARG_TYPE_INFO(0, timeout, IS_DOUBLE, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_setopt, 0, 3, _IS_BOOL, 0) + ZEND_ARG_INFO(0, multi_handle) + ZEND_ARG_TYPE_INFO(0, option, IS_LONG, 0) + ZEND_ARG_INFO(0, value) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_strerror, 0, 1, IS_STRING, 1) + ZEND_ARG_TYPE_INFO(0, error_number, IS_LONG, 0) +ZEND_END_ARG_INFO() + +#if LIBCURL_VERSION_NUM >= 0x071200 /* 7.18.0 */ +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_pause, 0, 2, IS_LONG, 0) + ZEND_ARG_INFO(0, handle) + ZEND_ARG_TYPE_INFO(0, bitmask, IS_LONG, 0) +ZEND_END_ARG_INFO() +#endif + +#define arginfo_curl_reset arginfo_curl_close + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_setopt_array, 0, 2, _IS_BOOL, 0) + ZEND_ARG_INFO(0, handle) + ZEND_ARG_TYPE_INFO(0, options, IS_ARRAY, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_setopt, 0, 3, _IS_BOOL, 0) + ZEND_ARG_INFO(0, handle) + ZEND_ARG_TYPE_INFO(0, option, IS_LONG, 0) + ZEND_ARG_INFO(0, value) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_share_close, 0, 1, IS_VOID, 0) + ZEND_ARG_INFO(0, share_handle) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_share_errno, 0, 1, IS_LONG, 0) + ZEND_ARG_INFO(0, share_handle) +ZEND_END_ARG_INFO() + +#define arginfo_curl_share_init arginfo_curl_multi_init + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_share_setopt, 0, 3, _IS_BOOL, 0) + ZEND_ARG_INFO(0, share_handle) + ZEND_ARG_TYPE_INFO(0, option, IS_LONG, 0) + ZEND_ARG_INFO(0, value) +ZEND_END_ARG_INFO() + +#define arginfo_curl_share_strerror arginfo_curl_multi_strerror + +#define arginfo_curl_strerror arginfo_curl_multi_strerror + +#define arginfo_curl_unescape arginfo_curl_escape + +ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_version, 0, 0, 0) + ZEND_ARG_TYPE_INFO(0, age, IS_LONG, 0) +ZEND_END_ARG_INFO() diff --git a/ext/curl/curl_file.c b/ext/curl/curl_file.c index a35e29147c..c750a36689 100644 --- a/ext/curl/curl_file.c +++ b/ext/curl/curl_file.c @@ -24,6 +24,8 @@ #include "Zend/zend_exceptions.h" #include "Zend/zend_interfaces.h" #include "php_curl.h" +#include "curl_arginfo.h" +#include "curl_file_arginfo.h" #if HAVE_CURL PHP_CURL_API zend_class_entry *curl_CURLFile_class; @@ -131,24 +133,13 @@ ZEND_METHOD(CURLFile, setPostFilename) } /* }}} */ -ZEND_BEGIN_ARG_INFO_EX(arginfo_curlfile_create, 0, 0, 1) - ZEND_ARG_INFO(0, filename) - ZEND_ARG_INFO(0, mimetype) - ZEND_ARG_INFO(0, postname) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_curlfile_name, 0) - ZEND_ARG_INFO(0, name) -ZEND_END_ARG_INFO() - - static const zend_function_entry curlfile_funcs[] = { - PHP_ME(CURLFile, __construct, arginfo_curlfile_create, ZEND_ACC_PUBLIC) - PHP_ME(CURLFile, getFilename, NULL, ZEND_ACC_PUBLIC) - PHP_ME(CURLFile, getMimeType, NULL, ZEND_ACC_PUBLIC) - PHP_ME(CURLFile, setMimeType, arginfo_curlfile_name, ZEND_ACC_PUBLIC) - PHP_ME(CURLFile, getPostFilename, NULL, ZEND_ACC_PUBLIC) - PHP_ME(CURLFile, setPostFilename, arginfo_curlfile_name, ZEND_ACC_PUBLIC) + PHP_ME(CURLFile, __construct, arginfo_class_CURLFile___construct, ZEND_ACC_PUBLIC) + PHP_ME(CURLFile, getFilename, arginfo_class_CURLFile_getFilename, ZEND_ACC_PUBLIC) + PHP_ME(CURLFile, getMimeType, arginfo_class_CURLFile_getMimeType, ZEND_ACC_PUBLIC) + PHP_ME(CURLFile, setMimeType, arginfo_class_CURLFile_setMimeType, ZEND_ACC_PUBLIC) + PHP_ME(CURLFile, getPostFilename, arginfo_class_CURLFile_getPostFilename, ZEND_ACC_PUBLIC) + PHP_ME(CURLFile, setPostFilename, arginfo_class_CURLFile_setPostFilename, ZEND_ACC_PUBLIC) PHP_FE_END }; diff --git a/ext/curl/curl_file.stub.php b/ext/curl/curl_file.stub.php new file mode 100644 index 0000000000..e6e21f9a02 --- /dev/null +++ b/ext/curl/curl_file.stub.php @@ -0,0 +1,24 @@ += 0x071200 /* Available since 7.18.0 */ -ZEND_BEGIN_ARG_INFO(arginfo_curl_pause, 0) - ZEND_ARG_INFO(0, ch) - ZEND_ARG_INFO(0, bitmask) -ZEND_END_ARG_INFO() -#endif - -ZEND_BEGIN_ARG_INFO_EX(arginfo_curlfile_create, 0, 0, 1) - ZEND_ARG_INFO(0, filename) - ZEND_ARG_INFO(0, mimetype) - ZEND_ARG_INFO(0, postname) -ZEND_END_ARG_INFO() -/* }}} */ - /* {{{ curl_functions[] */ static const zend_function_entry curl_functions[] = { @@ -411,6 +264,7 @@ static const zend_function_entry curl_functions[] = { #if LIBCURL_VERSION_NUM >= 0x071200 /* 7.18.0 */ PHP_FE(curl_pause, arginfo_curl_pause) #endif + PHP_FE(curl_file_create, arginfo_curl_file_create) PHP_FE(curl_multi_init, arginfo_curl_multi_init) PHP_FE(curl_multi_add_handle, arginfo_curl_multi_add_handle) PHP_FE(curl_multi_remove_handle, arginfo_curl_multi_remove_handle) @@ -425,7 +279,6 @@ static const zend_function_entry curl_functions[] = { PHP_FE(curl_share_close, arginfo_curl_share_close) PHP_FE(curl_share_setopt, arginfo_curl_share_setopt) PHP_FE(curl_share_errno, arginfo_curl_share_errno) - PHP_FE(curl_file_create, arginfo_curlfile_create) PHP_FE_END }; /* }}} */ -- 2.50.1