提交 3c6b98d0 authored 作者: Anthony Minessale's avatar Anthony Minessale

accept asterisk N/X/Z/. notation everywhere regexes are expected when they start with _

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@13287 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 fd115395
...@@ -514,7 +514,7 @@ SWITCH_DECLARE(char *) switch_separate_paren_args(char *str); ...@@ -514,7 +514,7 @@ SWITCH_DECLARE(char *) switch_separate_paren_args(char *str);
SWITCH_DECLARE(const char *) switch_stristr(const char *instr, const char *str); SWITCH_DECLARE(const char *) switch_stristr(const char *instr, const char *str);
SWITCH_DECLARE(switch_bool_t) switch_is_lan_addr(const char *ip); SWITCH_DECLARE(switch_bool_t) switch_is_lan_addr(const char *ip);
SWITCH_DECLARE(char *) switch_replace_char(char *str, char from, char to, switch_bool_t dup); SWITCH_DECLARE(char *) switch_replace_char(char *str, char from, char to, switch_bool_t dup);
SWITCH_DECLARE(switch_bool_t) switch_ast2regex(char *pat, char *rbuf, size_t len); SWITCH_DECLARE(switch_bool_t) switch_ast2regex(const char *pat, char *rbuf, size_t len);
/*! /*!
\brief Escape a string by prefixing a list of characters with an escape character \brief Escape a string by prefixing a list of characters with an escape character
......
...@@ -60,11 +60,18 @@ SWITCH_DECLARE(int) switch_regex_perform(const char *field, const char *expressi ...@@ -60,11 +60,18 @@ SWITCH_DECLARE(int) switch_regex_perform(const char *field, const char *expressi
int match_count = 0; int match_count = 0;
char *tmp = NULL; char *tmp = NULL;
uint32_t flags = 0; uint32_t flags = 0;
char abuf[256] = "";
if (!(field && expression)) { if (!(field && expression)) {
return 0; return 0;
} }
if (*expression == '_') {
if (switch_ast2regex(expression + 1, abuf, sizeof(abuf))) {
expression = abuf;
}
}
if (*expression == '/') { if (*expression == '/') {
char *opts = NULL; char *opts = NULL;
tmp = strdup(expression + 1); tmp = strdup(expression + 1);
......
...@@ -565,9 +565,9 @@ SWITCH_DECLARE(switch_bool_t) switch_is_lan_addr(const char *ip) ...@@ -565,9 +565,9 @@ SWITCH_DECLARE(switch_bool_t) switch_is_lan_addr(const char *ip)
)? SWITCH_FALSE : SWITCH_TRUE; )? SWITCH_FALSE : SWITCH_TRUE;
} }
SWITCH_DECLARE(switch_bool_t) switch_ast2regex(char *pat, char *rbuf, size_t len) SWITCH_DECLARE(switch_bool_t) switch_ast2regex(const char *pat, char *rbuf, size_t len)
{ {
char *p = pat; const char *p = pat;
if (!pat) { if (!pat) {
return SWITCH_FALSE; return SWITCH_FALSE;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论