])
PHP_NEW_EXTENSION(curl, interface.c multi.c share.c curl_file.c, $ext_shared)
+ PHP_INSTALL_HEADERS([ext/curl], [php_curl.h])
PHP_SUBST(CURL_SHARED_LIBADD)
fi
EXTENSION("curl", "interface.c multi.c share.c curl_file.c");
AC_DEFINE('HAVE_CURL', 1, 'Have cURL library');
ADD_FLAG("CFLAGS_CURL", "/D CURL_STATICLIB");
+ PHP_INSTALL_HEADERS("ext/curl", "php_curl.h");
// TODO: check for curl_version_info
} else {
WARNING("curl not enabled; libraries and headers not found");
#include "php.h"
#include "Zend/zend_exceptions.h"
#include "Zend/zend_interfaces.h"
-#include "php_curl.h"
+#include "curl_private.h"
#include "curl_file_arginfo.h"
PHP_CURL_API zend_class_entry *curl_CURLFile_class;
--- /dev/null
+/*
+ +----------------------------------------------------------------------+
+ | Copyright (c) The PHP Group |
+ +----------------------------------------------------------------------+
+ | This source file is subject to version 3.01 of the PHP license, |
+ | that is bundled with this package in the file LICENSE, and is |
+ | available through the world-wide-web at the following url: |
+ | http://www.php.net/license/3_01.txt |
+ | If you did not receive a copy of the PHP license and are unable to |
+ | obtain it through the world-wide-web, please send a note to |
+ | license@php.net so we can mail you a copy immediately. |
+ +----------------------------------------------------------------------+
+ | Author: Sterling Hughes <sterling@php.net> |
+ | Wez Furlong <wez@thebrainroom.com> |
+ +----------------------------------------------------------------------+
+*/
+
+#ifndef _PHP_CURL_PRIVATE_H
+#define _PHP_CURL_PRIVATE_H
+
+#include "php_curl.h"
+
+#define PHP_CURL_DEBUG 0
+
+#include "php_version.h"
+#define PHP_CURL_VERSION PHP_VERSION
+
+#include <curl/curl.h>
+#include <curl/multi.h>
+
+#define CURLOPT_RETURNTRANSFER 19913
+#define CURLOPT_BINARYTRANSFER 19914 /* For Backward compatibility */
+#define PHP_CURL_STDOUT 0
+#define PHP_CURL_FILE 1
+#define PHP_CURL_USER 2
+#define PHP_CURL_DIRECT 3
+#define PHP_CURL_RETURN 4
+#define PHP_CURL_IGNORE 7
+
+#define SAVE_CURL_ERROR(__handle, __err) \
+ do { (__handle)->err.no = (int) __err; } while (0)
+
+PHP_MINIT_FUNCTION(curl);
+PHP_MSHUTDOWN_FUNCTION(curl);
+PHP_MINFO_FUNCTION(curl);
+
+typedef struct {
+ zval func_name;
+ zend_fcall_info_cache fci_cache;
+ FILE *fp;
+ smart_str buf;
+ int method;
+ zval stream;
+} php_curl_write;
+
+typedef struct {
+ zval func_name;
+ zend_fcall_info_cache fci_cache;
+ FILE *fp;
+ zend_resource *res;
+ int method;
+ zval stream;
+} php_curl_read;
+
+typedef struct {
+ zval func_name;
+ zend_fcall_info_cache fci_cache;
+ int method;
+} php_curl_progress, php_curl_fnmatch, php_curlm_server_push;
+
+typedef struct {
+ php_curl_write *write;
+ php_curl_write *write_header;
+ php_curl_read *read;
+ zval std_err;
+ php_curl_progress *progress;
+#if LIBCURL_VERSION_NUM >= 0x071500 /* Available since 7.21.0 */
+ php_curl_fnmatch *fnmatch;
+#endif
+} php_curl_handlers;
+
+struct _php_curl_error {
+ char str[CURL_ERROR_SIZE + 1];
+ int no;
+};
+
+struct _php_curl_send_headers {
+ zend_string *str;
+};
+
+struct _php_curl_free {
+ zend_llist str;
+ zend_llist post;
+ zend_llist stream;
+ HashTable *slist;
+};
+
+typedef struct {
+ CURL *cp;
+ php_curl_handlers *handlers;
+ struct _php_curl_free *to_free;
+ struct _php_curl_send_headers header;
+ struct _php_curl_error err;
+ zend_bool in_callback;
+ uint32_t* clone;
+ zval postfields;
+ zend_object std;
+} php_curl;
+
+#define CURLOPT_SAFE_UPLOAD -1
+
+typedef struct {
+ php_curlm_server_push *server_push;
+} php_curlm_handlers;
+
+typedef struct {
+ int still_running;
+ CURLM *multi;
+ zend_llist easyh;
+ php_curlm_handlers *handlers;
+ struct {
+ int no;
+ } err;
+ zend_object std;
+} php_curlm;
+
+typedef struct {
+ CURLSH *share;
+ struct {
+ int no;
+ } err;
+ zend_object std;
+} php_curlsh;
+
+php_curl *init_curl_handle_into_zval(zval *curl);
+void init_curl_handle(php_curl *ch);
+void _php_curl_cleanup_handle(php_curl *);
+void _php_curl_multi_cleanup_list(void *data);
+void _php_curl_verify_handlers(php_curl *ch, int reporterror);
+void _php_setup_easy_copy_handlers(php_curl *ch, php_curl *source);
+
+static inline php_curl *curl_from_obj(zend_object *obj) {
+ return (php_curl *)((char *)(obj) - XtOffsetOf(php_curl, std));
+}
+
+#define Z_CURL_P(zv) curl_from_obj(Z_OBJ_P(zv))
+
+static inline php_curlsh *curl_share_from_obj(zend_object *obj) {
+ return (php_curlsh *)((char *)(obj) - XtOffsetOf(php_curlsh, std));
+}
+
+#define Z_CURL_SHARE_P(zv) curl_share_from_obj(Z_OBJ_P(zv))
+
+void curl_multi_register_class(const zend_function_entry *method_entries);
+void curl_share_register_class(const zend_function_entry *method_entries);
+void curlfile_register_class(void);
+int curl_cast_object(zend_object *obj, zval *result, int type);
+
+#endif /* _PHP_CURL_PRIVATE_H */
#include "ext/standard/info.h"
#include "ext/standard/file.h"
#include "ext/standard/url.h"
-#include "php_curl.h"
+#include "curl_private.h"
#include "curl_arginfo.h"
#ifdef PHP_CURL_NEED_OPENSSL_TSL /* {{{ */
#include "php.h"
#include "Zend/zend_interfaces.h"
+#include "Zend/zend_smart_str.h"
-#include "php_curl.h"
+#include "curl_private.h"
#include <curl/curl.h>
#include <curl/multi.h>
/* CurlMultiHandle class */
-static zend_class_entry *curl_multi_ce;
+zend_class_entry *curl_multi_ce;
static inline php_curlm *curl_multi_from_obj(zend_object *obj) {
return (php_curlm *)((char *)(obj) - XtOffsetOf(php_curlm, std));
#define _PHP_CURL_H
#include "php.h"
-#include "zend_smart_str.h"
-
-#define PHP_CURL_DEBUG 0
#ifdef PHP_WIN32
# define PHP_CURL_API __declspec(dllexport)
# define PHP_CURL_API
#endif
-#include "php_version.h"
-#define PHP_CURL_VERSION PHP_VERSION
-
-#include <curl/curl.h>
-#include <curl/multi.h>
-
extern zend_module_entry curl_module_entry;
#define phpext_curl_ptr &curl_module_entry
-#define CURLOPT_RETURNTRANSFER 19913
-#define CURLOPT_BINARYTRANSFER 19914 /* For Backward compatibility */
-#define PHP_CURL_STDOUT 0
-#define PHP_CURL_FILE 1
-#define PHP_CURL_USER 2
-#define PHP_CURL_DIRECT 3
-#define PHP_CURL_RETURN 4
-#define PHP_CURL_IGNORE 7
-
-#define SAVE_CURL_ERROR(__handle, __err) \
- do { (__handle)->err.no = (int) __err; } while (0)
-
-PHP_MINIT_FUNCTION(curl);
-PHP_MSHUTDOWN_FUNCTION(curl);
-PHP_MINFO_FUNCTION(curl);
-
-typedef struct {
- zval func_name;
- zend_fcall_info_cache fci_cache;
- FILE *fp;
- smart_str buf;
- int method;
- zval stream;
-} php_curl_write;
-
-typedef struct {
- zval func_name;
- zend_fcall_info_cache fci_cache;
- FILE *fp;
- zend_resource *res;
- int method;
- zval stream;
-} php_curl_read;
-
-typedef struct {
- zval func_name;
- zend_fcall_info_cache fci_cache;
- int method;
-} php_curl_progress, php_curl_fnmatch, php_curlm_server_push;
-
-typedef struct {
- php_curl_write *write;
- php_curl_write *write_header;
- php_curl_read *read;
- zval std_err;
- php_curl_progress *progress;
-#if LIBCURL_VERSION_NUM >= 0x071500 /* Available since 7.21.0 */
- php_curl_fnmatch *fnmatch;
-#endif
-} php_curl_handlers;
-
-struct _php_curl_error {
- char str[CURL_ERROR_SIZE + 1];
- int no;
-};
-
-struct _php_curl_send_headers {
- zend_string *str;
-};
-
-struct _php_curl_free {
- zend_llist str;
- zend_llist post;
- zend_llist stream;
- HashTable *slist;
-};
-
-typedef struct {
- CURL *cp;
- php_curl_handlers *handlers;
- struct _php_curl_free *to_free;
- struct _php_curl_send_headers header;
- struct _php_curl_error err;
- zend_bool in_callback;
- uint32_t* clone;
- zval postfields;
- zend_object std;
-} php_curl;
-
-#define CURLOPT_SAFE_UPLOAD -1
-
-typedef struct {
- php_curlm_server_push *server_push;
-} php_curlm_handlers;
-
-typedef struct {
- int still_running;
- CURLM *multi;
- zend_llist easyh;
- php_curlm_handlers *handlers;
- struct {
- int no;
- } err;
- zend_object std;
-} php_curlm;
-
-typedef struct {
- CURLSH *share;
- struct {
- int no;
- } err;
- zend_object std;
-} php_curlsh;
-
-php_curl *init_curl_handle_into_zval(zval *curl);
-void init_curl_handle(php_curl *ch);
-void _php_curl_cleanup_handle(php_curl *);
-void _php_curl_multi_cleanup_list(void *data);
-void _php_curl_verify_handlers(php_curl *ch, int reporterror);
-void _php_setup_easy_copy_handlers(php_curl *ch, php_curl *source);
-
-static inline php_curl *curl_from_obj(zend_object *obj) {
- return (php_curl *)((char *)(obj) - XtOffsetOf(php_curl, std));
-}
-
-#define Z_CURL_P(zv) curl_from_obj(Z_OBJ_P(zv))
-
-static inline php_curlsh *curl_share_from_obj(zend_object *obj) {
- return (php_curlsh *)((char *)(obj) - XtOffsetOf(php_curlsh, std));
-}
-
-#define Z_CURL_SHARE_P(zv) curl_share_from_obj(Z_OBJ_P(zv))
-
PHP_CURL_API extern zend_class_entry *curl_ce;
PHP_CURL_API extern zend_class_entry *curl_share_ce;
-
-void curl_multi_register_class(const zend_function_entry *method_entries);
-void curl_share_register_class(const zend_function_entry *method_entries);
-void curlfile_register_class(void);
-int curl_cast_object(zend_object *obj, zval *result, int type);
-
+PHP_CURL_API extern zend_class_entry *curl_multi_ce;
PHP_CURL_API extern zend_class_entry *curl_CURLFile_class;
#endif /* _PHP_CURL_H */
#include "php.h"
#include "Zend/zend_interfaces.h"
-#include "php_curl.h"
+#include "curl_private.h"
#include <curl/curl.h>