Skip to content
Snippets Groups Projects
Commit 1c51fec0 authored by Tilghman Lesher's avatar Tilghman Lesher
Browse files

In compat14 mode, don't translate pipes inside expressions, as they aren't

argument delimiters, but rather 'or' symbols.
(Closes issue #12723)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@118300 65c4cc65-6c06-0410-ace0-fbb531ad65f3
parent f67e8ec9
Branches
Tags
No related merge requests found
......@@ -181,17 +181,26 @@ static int realtime_exec(struct ast_channel *chan, const char *context, const ch
else if (!strcasecmp(v->name, "appdata")) {
if (!compat16) {
char *ptr;
int in = 0;
tmp = alloca(strlen(v->value) * 2 + 1);
for (ptr = tmp; *v->value; v->value++) {
if (*v->value == ',') {
*ptr++ = '\\';
*ptr++ = ',';
} else if (*v->value == '|') {
} else if (*v->value == '|' && !in) {
*ptr++ = ',';
} else {
*ptr++ = *v->value;
}
/* Don't escape '|', meaning 'or', inside expressions ($[ ]) */
if (v->value[0] == '[' && v->value[-1] == '$') {
in++;
} else if (v->value[0] == ']' && in) {
in--;
}
}
*ptr = '\0';
} else {
tmp = ast_strdupa(v->value);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment