From 2638192439d2dcd65576b685d82f8a90747247ac Mon Sep 17 00:00:00 2001 From: "Kevin P. Fleming" Date: Sun, 15 May 2005 23:53:11 +0000 Subject: add EVAL function, deprecate Eval application (bug #4277) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5689 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- funcs/func_strings.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'funcs') diff --git a/funcs/func_strings.c b/funcs/func_strings.c index 4d571bf9f..0385fc5dd 100755 --- a/funcs/func_strings.c +++ b/funcs/func_strings.c @@ -171,3 +171,35 @@ struct ast_custom_function strftime_function = { .syntax = "STRFTIME([][,[timezone][,format]])", .read = acf_strftime, }; + +static char *function_eval(struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len) +{ + if (!data || ast_strlen_zero(data)) { + ast_log(LOG_WARNING, "EVAL requires an argument: EVAL()\n"); + return buf; + } + + pbx_substitute_variables_helper(chan, data, buf, len - 1); + + return buf; +} + +#ifndef BUILTIN_FUNC +static +#endif +struct ast_custom_function eval_function = { + .name = "EVAL", + .synopsis = "Evaluate stored variables.", + .syntax = "EVAL()", + .desc = "Using EVAL basically causes a string to be evaluated twice.\n" + "When a variable or expression is in the dialplan, it will be\n" + "evaluated at runtime. However, if the result of the evaluation\n" + "is in fact a variable or expression, using EVAL will have it\n" + "evaluated a second time. For example, if the variable ${MYVAR}\n" + "contains \"${OTHERVAR}\", then the result of putting ${EVAL(${MYVAR})}\n" + "in the dialplan will be the contents of the variable, OTHERVAR.\n" + "Normally, by just putting ${MYVAR} in the dialplan, you would be\n" + "left with \"${OTHERVAR}\".\n", + .read = function_eval, +}; + -- cgit v1.2.3