X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_headers_api.c;h=f264b68ae4c4ccd1771b2cc289869e959cd28eb5;hp=81181e5711e6141b9cf4c653c72506b8fd2e721f;hb=902d195a198f4976c8ff081a95cdd3e315c14f5f;hpb=74c406d2e8a73540d9df9b888a17c86b0bb7fc2c diff --git a/http_headers_api.c b/http_headers_api.c index 81181e5..f264b68 100644 --- a/http_headers_api.c +++ b/http_headers_api.c @@ -18,10 +18,8 @@ #ifdef HAVE_CONFIG_H # include "config.h" #endif - -#include - #include "php.h" + #include "ext/standard/php_string.h" #include "ext/standard/url.h" @@ -30,6 +28,8 @@ #include "php_http_api.h" #include "php_http_headers_api.h" +#include + /* {{{ static int http_sort_q(const void *, const void *) */ static int http_sort_q(const void *a, const void *b TSRMLS_DC) { @@ -366,83 +366,11 @@ PHP_HTTP_API void _http_parse_headers_default_callback(const char *http_line, Ha } } -/* {{{ */ -PHP_HTTP_API STATUS _http_parse_cookie(const char *cookie, HashTable *values TSRMLS_DC) -{ - const char *key = cookie, *val = NULL; - int vallen = 0, keylen = 0, done = 0; - zval array; - - Z_ARRVAL(array) = values; - - if (!(val = strchr(cookie, '='))) { - return FAILURE; - } - -#define HTTP_COOKIE_VAL(array, k, str, len) \ - { \ - const char *encoded = str; \ - char *decoded = NULL; \ - int decoded_len = 0, encoded_len = len; \ - decoded = estrndup(encoded, encoded_len); \ - decoded_len = php_url_decode(decoded, encoded_len); \ - add_assoc_stringl(array, k, decoded, decoded_len, 0); \ - } -#define HTTP_COOKIE_FIXKEY() \ - { \ - while (isspace(*key)) ++key; \ - keylen = val - key; \ - while (isspace(key[keylen - 1])) --keylen; \ - } -#define HTTP_COOKIE_FIXVAL() \ - { \ - ++val; \ - while (isspace(*val)) ++val; \ - vallen = key - val; \ - while (isspace(val[vallen - 1])) --vallen; \ - } - - HTTP_COOKIE_FIXKEY(); - HTTP_COOKIE_VAL(&array, "name", key, keylen); - - /* just a name=value cookie */ - if (!(key = strchr(val, ';'))) { - key = val + strlen(val); - HTTP_COOKIE_FIXVAL(); - HTTP_COOKIE_VAL(&array, "value", val, vallen); - } - /* additional info appended */ - else { - char *keydup = NULL; - - HTTP_COOKIE_FIXVAL(); - HTTP_COOKIE_VAL(&array, "value", val, vallen); - - do { - if (!(val = strchr(key, '='))) { - break; - } - ++key; - HTTP_COOKIE_FIXKEY(); - keydup = estrndup(key, keylen); - if (!(key = strchr(val, ';'))) { - done = 1; - key = val + strlen(val); - } - HTTP_COOKIE_FIXVAL(); - HTTP_COOKIE_VAL(&array, keydup, val, vallen); - efree(keydup); - } while (!done); - } - return SUCCESS; -} -/* }}} */ - /* {{{ void http_get_request_headers_ex(HashTable *, zend_bool) */ PHP_HTTP_API void _http_get_request_headers_ex(HashTable *headers, zend_bool prettify TSRMLS_DC) { char *key = NULL; - long idx = 0; + ulong idx = 0; zval array; Z_ARRVAL(array) = headers;