Mercurial > hg > nginx
changeset 1784:7d313324d874
ngx_regex_exec_array()
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Thu, 27 Dec 2007 13:15:08 +0000 |
parents | cfb879757a43 |
children | 0673b54f34f7 |
files | src/core/ngx_regex.c src/core/ngx_regex.h |
diffstat | 2 files changed, 41 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/core/ngx_regex.c +++ b/src/core/ngx_regex.c @@ -114,6 +114,39 @@ ngx_regex_exec(ngx_regex_t *re, ngx_str_ } +ngx_int_t +ngx_regex_exec_array(ngx_array_t *a, ngx_str_t *s, ngx_log_t *log) +{ + ngx_int_t n; + ngx_uint_t i; + ngx_regex_elt_t *re; + + re = a->elts; + + for (i = 0; i < a->nelts; i++) { + + n = ngx_regex_exec(re[i].regex, s, NULL, 0); + + if (n == NGX_REGEX_NO_MATCHED) { + continue; + } + + if (n < 0) { + ngx_log_error(NGX_LOG_ALERT, log, 0, + ngx_regex_exec_n " failed: %d on \"%V\" using \"%s\"", + n, s, re[i].name); + return NGX_ERROR; + } + + /* match */ + + return NGX_OK; + } + + return NGX_DECLINED; +} + + static void * ngx_libc_cdecl ngx_regex_malloc(size_t size) {
--- a/src/core/ngx_regex.h +++ b/src/core/ngx_regex.h @@ -20,12 +20,20 @@ typedef pcre ngx_regex_t; +typedef struct { + ngx_regex_t *regex; + u_char *name; +} ngx_regex_elt_t; + + void ngx_regex_init(void); ngx_regex_t *ngx_regex_compile(ngx_str_t *pattern, ngx_int_t options, ngx_pool_t *pool, ngx_str_t *err); ngx_int_t ngx_regex_capture_count(ngx_regex_t *re); ngx_int_t ngx_regex_exec(ngx_regex_t *re, ngx_str_t *s, int *captures, ngx_int_t size); +ngx_int_t ngx_regex_exec_array(ngx_array_t *a, ngx_str_t *s, ngx_log_t *log); + #define ngx_regex_exec_n "pcre_exec()" #define ngx_regex_capture_count_n "pcre_fullinfo()"