提交 6e1c32e0 authored 作者: Anthony Minessale's avatar Anthony Minessale

update

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@7301 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 798b257b
...@@ -95,7 +95,7 @@ SWITCH_DECLARE(int) switch_regex_perform(const char *field, const char *expressi ...@@ -95,7 +95,7 @@ SWITCH_DECLARE(int) switch_regex_perform(const char *field, const char *expressi
&erroffset, /* for error offset */ &erroffset, /* for error offset */
NULL); /* use default character tables */ NULL); /* use default character tables */
if (error) { if (error) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "COMPILE ERROR: %d [%s]\n", erroffset, error); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "COMPILE ERROR: %d [%s][%s]\n", erroffset, error, expression);
switch_regex_safe_free(re); switch_regex_safe_free(re);
goto end; goto end;
} }
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
#include <arpa/inet.h> #include <arpa/inet.h>
#endif #endif
#include "private/switch_core_pvt.h" #include "private/switch_core_pvt.h"
#define ESCAPE_META '\\'
SWITCH_DECLARE(char *) switch_find_end_paren(const char *s, char open, char close) SWITCH_DECLARE(char *) switch_find_end_paren(const char *s, char open, char close)
{ {
...@@ -1017,7 +1017,7 @@ SWITCH_DECLARE(char *) switch_escape_char(switch_memory_pool_t *pool, char *in, ...@@ -1017,7 +1017,7 @@ SWITCH_DECLARE(char *) switch_escape_char(switch_memory_pool_t *pool, char *in,
static char unescape_char(char escaped) static char unescape_char(char escaped)
{ {
char unescaped; char unescaped;
printf("WTF [%c]\n", escaped);
switch (escaped) { switch (escaped) {
case 'n': case 'n':
unescaped = '\n'; unescaped = '\n';
...@@ -1052,16 +1052,25 @@ static char *cleanup_separated_string(char *str) ...@@ -1052,16 +1052,25 @@ static char *cleanup_separated_string(char *str)
} }
for (start = dest = ptr; *ptr; ++ptr) { for (start = dest = ptr; *ptr; ++ptr) {
if (*ptr == '\\') { char e;
++ptr; int esc = 0;
*dest++ = unescape_char(*ptr);
end = dest; if (*ptr == ESCAPE_META) {
} else if (*ptr == '\'') { if ((e = unescape_char(*(ptr+1))) != e) {
inside_quotes = (1 - inside_quotes); ++ptr;
} else { *dest++ = e;
*dest++ = *ptr;
if (*ptr != ' ' || inside_quotes) {
end = dest; end = dest;
esc++;
}
}
if (!esc) {
if (*ptr == '\'') {
inside_quotes = (1 - inside_quotes);
} else {
*dest++ = *ptr;
if (*ptr != ' ' || inside_quotes) {
end = dest;
}
} }
} }
} }
...@@ -1093,7 +1102,7 @@ static unsigned int separate_string_char_delim(char *buf, char delim, char **arr ...@@ -1093,7 +1102,7 @@ static unsigned int separate_string_char_delim(char *buf, char delim, char **arr
case FIND_DELIM: case FIND_DELIM:
/* escaped characters are copied verbatim to the destination string */ /* escaped characters are copied verbatim to the destination string */
if (*ptr == '\\') { if (*ptr == ESCAPE_META) {
++ptr; ++ptr;
} else if (*ptr == '\'') { } else if (*ptr == '\'') {
inside_quotes = (1 - inside_quotes); inside_quotes = (1 - inside_quotes);
...@@ -1143,7 +1152,7 @@ static unsigned int separate_string_blank_delim(char *buf, char **array, unsigne ...@@ -1143,7 +1152,7 @@ static unsigned int separate_string_blank_delim(char *buf, char **array, unsigne
break; break;
case FIND_DELIM: case FIND_DELIM:
if (*ptr == '\\') { if (*ptr == ESCAPE_META) {
++ptr; ++ptr;
} else if (*ptr == '\'') { } else if (*ptr == '\'') {
inside_quotes = (1 - inside_quotes); inside_quotes = (1 - inside_quotes);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论