提交 592ee146 authored 作者: Anthony Minessale's avatar Anthony Minessale

sigh

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6023 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 d125f8a7
...@@ -1264,28 +1264,44 @@ if ((dp = realloc(data, olen))) {\ ...@@ -1264,28 +1264,44 @@ if ((dp = realloc(data, olen))) {\
SWITCH_DECLARE(char *) switch_channel_expand_variables(switch_channel_t *channel, char *in) SWITCH_DECLARE(char *) switch_channel_expand_variables(switch_channel_t *channel, char *in)
{ {
char *p, *c; char *q, *p, *c = NULL;
char *data, *indup; char *data, *indup;
size_t sp = 0, len = 0, olen = 0, vtype = 0, br = 0, cpos, block = 128; size_t sp = 0, len = 0, olen = 0, vtype = 0, br = 0, cpos, block = 128;
char *sub_val = NULL, *func_val = NULL; char *sub_val = NULL, *func_val = NULL;
int nv = 0; int nv = 0;
if (in && (p = strchr(in, '$'))) { q = in;
if (!*(p + 1)) { while(q && *q) {
return in; if (!(p = strchr(q, '$'))) {
break;
} }
} else {
return in; if (*(p-1) == '\\') {
q = p + 1;
continue;
}
if (*(p+1) != '{') {
q = p + 1;
continue;
}
nv = 1;
break;
} }
if (!nv) {
return in;
}
olen = strlen(in); nv = 0;
olen = strlen(in) + 1;
indup = strdup(in); indup = strdup(in);
if ((data = malloc(olen))) { if ((data = malloc(olen))) {
memset(data, 0, olen); memset(data, 0, olen);
c = data; c = data;
for (p = indup; *p; p++) { for (p = indup; p && *p; p++) {
vtype = 0; vtype = 0;
if (*p == '\\') { if (*p == '\\') {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论