update
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@7301 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
798b257bdf
commit
6e1c32e099
|
@ -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 @@
|
||||||
#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,
|
||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
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
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue