Mercurial > hg > nginx-vendor-current
diff src/http/ngx_http_variables.c @ 616:8214eaef3530 NGINX_0_9_6
nginx 0.9.6
*) Feature: the "map" directive supports regular expressions as value
of the first parameter.
*) Feature: $time_iso8601 access_log variable.
Thanks to Michael Lustfield.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 21 Mar 2011 00:00:00 +0300 |
parents | c456a023113c |
children | 83b58b182b76 |
line wrap: on
line diff
--- a/src/http/ngx_http_variables.c +++ b/src/http/ngx_http_variables.c @@ -1660,6 +1660,50 @@ ngx_http_variable_pid(ngx_http_request_t } +void * +ngx_http_map_find(ngx_http_request_t *r, ngx_http_map_t *map, ngx_uint_t key, + u_char *text, size_t len, ngx_str_t *match) +{ + void *p; + + p = ngx_hash_find_combined(&map->hash, key, text, len); + if (p) { + return p; + } + +#if (NGX_PCRE) + + if (len && map->nregex) { + ngx_int_t n; + ngx_uint_t i; + ngx_http_map_regex_t *reg; + + reg = map->regex; + + for (i = 0; i < map->nregex; i++) { + + n = ngx_http_regex_exec(r, reg[i].regex, match); + + if (n == NGX_OK) { + return reg[i].value; + } + + if (n == NGX_DECLINED) { + continue; + } + + /* NGX_ERROR */ + + return NULL; + } + } + +#endif + + return NULL; +} + + #if (NGX_PCRE) static ngx_int_t