X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_functions.c;h=eb63337194cdb88604e111ff36a4b2c611c27204;hb=0e998acc9b529b67de3b1a772e016dd85bbc8eb2;hp=33c1e4a34a3a856826ae94ae6fe3cab0b721d1fe;hpb=2655b1c8838edb32ef8ac67376f123e8d613a9af;p=m6w6%2Fext-http diff --git a/http_functions.c b/http_functions.c index 33c1e4a..eb63337 100644 --- a/http_functions.c +++ b/http_functions.c @@ -1068,7 +1068,7 @@ PHP_FUNCTION(http_parse_cookie) FOREACH_VAL(pos, allowed_extras_array, entry) { ZVAL_ADDREF(*entry); convert_to_string_ex(entry); - allowed_extras[i] = estrndup(Z_STRVAL_PP(entry), Z_STRLEN_PP(entry)); + allowed_extras[i++] = estrndup(Z_STRVAL_PP(entry), Z_STRLEN_PP(entry)); zval_ptr_dtor(entry); } } @@ -1088,6 +1088,30 @@ PHP_FUNCTION(http_parse_cookie) efree(allowed_extras); } } +/* }}} */ + +/* {{{ proto string http_build_cookie(array cookie) + * + * Build a cookie string from an array/object like returned by http_parse_cookie(). + */ +PHP_FUNCTION(http_build_cookie) +{ + char *str = NULL; + size_t len = 0; + zval *strct; + http_cookie_list list; + + if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &strct)) { + RETURN_FALSE; + } + + http_cookie_list_fromstruct(&list, strct); + http_cookie_list_tostring(&list, &str, &len); + http_cookie_list_dtor(&list); + + RETURN_STRINGL(str, len, 0); +} +/* }}} */ /* {{{ proto object http_parse_params(string param[, int flags = HTTP_PARAMS_DEFAULT]) * @@ -1127,7 +1151,7 @@ PHP_FUNCTION(http_get_request_headers) NO_ARGS; array_init(return_value); - http_get_request_headers(return_value); + http_get_request_headers(Z_ARRVAL_P(return_value)); } /* }}} */