X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_headers_api.c;h=2af2da0d71258cd0387ca7d78601fe642a419a96;hp=e320f46b8ca2864e108c70d425464361ef86a7da;hb=39feb7a7e30bb4b393a6f76aa2f35d4e9275523e;hpb=60d91c35d7c2b4ce86ed67813f2f5a19266a30cc diff --git a/http_headers_api.c b/http_headers_api.c index e320f46..2af2da0 100644 --- a/http_headers_api.c +++ b/http_headers_api.c @@ -37,6 +37,18 @@ ZEND_EXTERN_MODULE_GLOBALS(http); # define HTTP_DBG_NEG 0 #endif +/* {{{ STATUS http_headers_global_init() */ +STATUS _http_headers_global_init(INIT_FUNC_ARGS) +{ + HTTP_LONG_CONSTANT("HTTP_REDIRECT", HTTP_REDIRECT); + HTTP_LONG_CONSTANT("HTTP_REDIRECT_PERM", HTTP_REDIRECT_PERM); + HTTP_LONG_CONSTANT("HTTP_REDIRECT_POST", HTTP_REDIRECT_POST); + HTTP_LONG_CONSTANT("HTTP_REDIRECT_TEMP", HTTP_REDIRECT_TEMP); + + return SUCCESS; +} +/* }}} */ + /* {{{ static int http_sort_q(const void *, const void *) */ static int http_sort_q(const void *a, const void *b TSRMLS_DC) { @@ -81,7 +93,7 @@ char *_http_negotiate_language_func(const char *test, double *quality, HashTable if ( (!strncasecmp(Z_STRVAL_PP(value), test, len)) && ( (Z_STRVAL_PP(value)[len] == '\0') || (Z_STRVAL_PP(value)[len] == '-'))) { - *quality /= 2; + *quality *= .9; return Z_STRVAL_PP(value); } } @@ -154,7 +166,7 @@ PHP_HTTP_API HashTable *_http_negotiate_q(const char *header, HashTable *support while (*++ptr && !isdigit(*ptr)); - quality = strtod(ptr, NULL); + quality = atof(ptr); identifier = estrndup(Z_STRVAL_PP(entry), separator - Z_STRVAL_PP(entry)); } else { quality = 1000.0 - i++; @@ -331,7 +343,8 @@ PHP_HTTP_API STATUS _http_parse_headers_ex(const char *header, HashTable *header size_t header_len; zval array; - Z_ARRVAL(array) = headers; + INIT_ZARR(array, headers); + if (body) { header_len = body - header; } else { @@ -341,7 +354,7 @@ PHP_HTTP_API STATUS _http_parse_headers_ex(const char *header, HashTable *header while (header_len >= (size_t) (line - begin)) { int value_len = 0; - + /* note: valgrind may choke on that -- should be safe though */ switch (*line++) { case ':':