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

Use the standard parsing routines

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@44231 65c4cc65-6c06-0410-ace0-fbb531ad65f3
parent 8ff3dd27
No related branches found
No related tags found
No related merge requests found
...@@ -182,27 +182,39 @@ static int gosub_exec(struct ast_channel *chan, void *data) ...@@ -182,27 +182,39 @@ static int gosub_exec(struct ast_channel *chan, void *data)
static int gosubif_exec(struct ast_channel *chan, void *data) static int gosubif_exec(struct ast_channel *chan, void *data)
{ {
struct ast_module_user *u; struct ast_module_user *u;
char *condition = "", *label1, *label2, *args; char *args;
int res=0; int res=0;
AST_DECLARE_APP_ARGS(cond,
AST_APP_ARG(ition);
AST_APP_ARG(labels);
);
AST_DECLARE_APP_ARGS(label,
AST_APP_ARG(iftrue);
AST_APP_ARG(iffalse);
);
if (ast_strlen_zero(data)) { if (ast_strlen_zero(data)) {
ast_log(LOG_WARNING, "GosubIf requires an argument: GosubIf(cond?label1(args):label2(args)\n"); ast_log(LOG_WARNING, "GosubIf requires an argument: GosubIf(cond?label1(args):label2(args)\n");
return 0; return 0;
} }
args = ast_strdupa(data);
u = ast_module_user_add(chan); u = ast_module_user_add(chan);
condition = strsep(&args, "?"); args = ast_strdupa(data);
label1 = strsep(&args, ":"); AST_NONSTANDARD_APP_ARGS(cond, args, '?');
label2 = args; if (cond.argc != 2) {
ast_log(LOG_WARNING, "GosubIf requires an argument: GosubIf(cond?label1(args):label2(args)\n");
ast_module_user_remove(u);
return 0;
}
AST_NONSTANDARD_APP_ARGS(label, cond.labels, ':');
if (pbx_checkcondition(condition)) { if (pbx_checkcondition(cond.ition)) {
if (label1) if (!ast_strlen_zero(label.iftrue))
res = gosub_exec(chan, label1); res = gosub_exec(chan, label.iftrue);
} else if (label2) { } else if (!ast_strlen_zero(label.iffalse)) {
res = gosub_exec(chan, label2); res = gosub_exec(chan, label.iffalse);
} }
ast_module_user_remove(u); ast_module_user_remove(u);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment