diff --git a/apps/app_exec.c b/apps/app_exec.c index 88c81822be..285b8b2f02 100644 --- a/apps/app_exec.c +++ b/apps/app_exec.c @@ -148,7 +148,7 @@ static int tryexec_exec(struct ast_channel *chan, void *data) static int execif_exec(struct ast_channel *chan, void *data) { int res = 0; - char *truedata = NULL, *falsedata = NULL, *end; + char *truedata = NULL, *falsedata = NULL, *end, *firstcomma, *firstquestion; struct ast_app *app = NULL; AST_DECLARE_APP_ARGS(expr, AST_APP_ARG(expr); @@ -160,24 +160,49 @@ static int execif_exec(struct ast_channel *chan, void *data) ); char *parse = ast_strdupa(data); - AST_NONSTANDARD_APP_ARGS(expr, parse, '?'); - if (ast_strlen_zero(expr.remainder)) { - ast_log(LOG_ERROR, "Usage: ExecIf(?()[:(?%s(%s))\n", depr.appname, depr.appargs); + + /* Make the two syntaxes look the same */ + expr.expr = depr.expr; + apps.t = depr.appname; + apps.f = NULL; + truedata = depr.appargs; + } else { + /* Preferred syntax */ + + AST_NONSTANDARD_APP_ARGS(expr, parse, '?'); + if (ast_strlen_zero(expr.remainder)) { + ast_log(LOG_ERROR, "Usage: ExecIf(?()[:(