X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_functions.c;h=470c47b4ca19128f2b5603d82d3666e3abfb1499;hp=2935626ecfb4eff1483540cd63d4fbc5dbc310e5;hb=107576b154825ebac44f2cc08d97565a5349eca8;hpb=a9bf30098351bc77da5171ac420f4b55d8d07647 diff --git a/http_functions.c b/http_functions.c index 2935626..470c47b 100644 --- a/http_functions.c +++ b/http_functions.c @@ -15,9 +15,6 @@ /* $Id$ */ -#define _WINSOCKAPI_ -#define ZEND_INCLUDE_FULL_WINDOWS_HEADERS - #ifdef HAVE_CONFIG_H # include "config.h" #endif @@ -28,7 +25,6 @@ #include "ext/standard/info.h" #include "ext/session/php_session.h" #include "ext/standard/php_string.h" -#include "ext/standard/php_smart_str.h" #include "SAPI.h" @@ -37,6 +33,8 @@ #include "php_http_curl_api.h" #include "php_http_std_defs.h" +#include "phpstr/phpstr.h" + ZEND_DECLARE_MODULE_GLOBALS(http) /* {{{ proto string http_date([int timestamp]) @@ -376,7 +374,7 @@ PHP_FUNCTION(http_cache_last_modified) */ PHP_FUNCTION(http_cache_etag) { - char *etag; + char *etag = NULL; int etag_len = 0; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &etag, &etag_len) != SUCCESS) { @@ -608,7 +606,7 @@ PHP_FUNCTION(http_split_response) php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not parse HTTP response"); RETURN_FALSE; } - + array_init(return_value); add_index_zval(return_value, 0, zheaders); add_index_zval(return_value, 1, zbody); @@ -954,16 +952,16 @@ PHP_FUNCTION(http_auth_basic_cb) /* {{{ Sara Golemons http_build_query() */ #ifndef ZEND_ENGINE_2 -/* {{{ proto string http_build_query(mixed formdata [, string prefix]) +/* {{{ proto string http_build_query(mixed formdata [, string prefix[, string arg_separator]]) Generates a form-encoded query string from an associative array or object. */ PHP_FUNCTION(http_build_query) { zval *formdata; - char *prefix = NULL; - int prefix_len = 0; - smart_str formstr = {0}; + char *prefix = NULL, *arg_sep = INI_STR("arg_separator.output"); + int prefix_len = 0, arg_sep_len = strlen(arg_sep); + phpstr *formstr = phpstr_new(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|s", &formdata, &prefix, &prefix_len) != SUCCESS) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|ss", &formdata, &prefix, &prefix_len, &arg_sep, &arg_sep_len) != SUCCESS) { RETURN_FALSE; } @@ -972,25 +970,31 @@ PHP_FUNCTION(http_build_query) RETURN_FALSE; } - if (php_url_encode_hash_ex(HASH_OF(formdata), &formstr, prefix, prefix_len, NULL, 0, NULL, 0, (Z_TYPE_P(formdata) == IS_OBJECT ? formdata : NULL) TSRMLS_CC) == FAILURE) { - if (formstr.c) { - efree(formstr.c); - } + if (!arg_sep_len) { + arg_sep = HTTP_URL_ARGSEP_DEFAULT; + } + + if (SUCCESS != http_urlencode_hash_implementation_ex(HASH_OF(formdata), formstr, arg_sep, prefix, prefix_len, NULL, 0, NULL, 0, (Z_TYPE_P(formdata) == IS_OBJECT ? formdata : NULL) TSRMLS_CC)) { + phpstr_free(formstr); RETURN_FALSE; } - if (!formstr.c) { + if (!formstr->used) { + phpstr_free(formstr); RETURN_NULL(); } - smart_str_0(&formstr); - - RETURN_STRINGL(formstr.c, formstr.len, 0); + RETURN_PHPSTR_PTR(formstr); } /* }}} */ #endif /* !ZEND_ENGINE_2 */ /* }}} */ +PHP_FUNCTION(http_test) +{ + RETURN_TRUE; +} + /* * Local variables: * tab-width: 4