Index: funcs/func_strings.c =================================================================== RCS file: /usr/cvsroot/asterisk/funcs/func_strings.c,v retrieving revision 1.3 diff -u -r1.3 func_strings.c --- funcs/func_strings.c 5 May 2005 12:48:52 -0000 1.3 +++ funcs/func_strings.c 15 May 2005 23:06:40 -0000 @@ -171,3 +171,35 @@ .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, +}; + Index: apps/app_eval.c =================================================================== RCS file: /usr/cvsroot/asterisk/apps/app_eval.c,v retrieving revision 1.4 diff -u -r1.4 app_eval.c --- apps/app_eval.c 27 Apr 2005 01:50:53 -0000 1.4 +++ apps/app_eval.c 15 May 2005 23:06:40 -0000 @@ -49,6 +49,12 @@ int res=0; struct localuser *u; char *s, *newvar=NULL, tmp[MAXRESULT]; + static int dep_warning = 0; + + if (!dep_warning) { + ast_log(LOG_WARNING, "This application has been deprecated in favor of the dialplan function, EVAL\n"); + dep_warning = 1; + } LOCAL_USER_ADD(u);