diff options
author | Igor Sysoev <igor@sysoev.ru> | 2007-12-27 13:15:08 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2007-12-27 13:15:08 +0000 |
commit | 6b8a04ef44c35d5e4016e746300af42f28d7a8b6 (patch) | |
tree | d171fb812b23b0ad05d5bec3fa5cb50dec21fbd6 /src/core/ngx_regex.c | |
parent | e87afbad3538e868548491ee7ec5ae10cccbd8b4 (diff) | |
download | nginx-6b8a04ef44c35d5e4016e746300af42f28d7a8b6.tar.gz nginx-6b8a04ef44c35d5e4016e746300af42f28d7a8b6.zip |
ngx_regex_exec_array()
Diffstat (limited to 'src/core/ngx_regex.c')
-rw-r--r-- | src/core/ngx_regex.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/core/ngx_regex.c b/src/core/ngx_regex.c index eda243bec..be2dae79b 100644 --- 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_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) +{ + 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) { |