[asterisk-commits] file: trunk r40226 - in /trunk: ./
funcs/func_cdr.c
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Thu Aug 17 09:29:44 MST 2006
Author: file
Date: Thu Aug 17 11:29:44 2006
New Revision: 40226
URL: http://svn.digium.com/view/asterisk?rev=40226&view=rev
Log:
Add 'l' option to CDR dialplan function which will cause it to pass the last CDR record to getvar instead of the first. (issue #7689 reported by voipgate)
Modified:
trunk/ (props changed)
trunk/funcs/func_cdr.c
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.2-merged' - no diff available.
Modified: trunk/funcs/func_cdr.c
URL: http://svn.digium.com/view/asterisk/trunk/funcs/func_cdr.c?rev=40226&r1=40225&r2=40226&view=diff
==============================================================================
--- trunk/funcs/func_cdr.c (original)
+++ trunk/funcs/func_cdr.c Thu Aug 17 11:29:44 2006
@@ -42,9 +42,11 @@
enum {
OPT_RECURSIVE = (1 << 0),
OPT_UNPARSED = (1 << 1),
+ OPT_LAST = (1 << 2),
} cdr_option_flags;
AST_APP_OPTIONS(cdr_func_options, {
+ AST_APP_OPTION('l', OPT_LAST),
AST_APP_OPTION('r', OPT_RECURSIVE),
AST_APP_OPTION('u', OPT_UNPARSED),
});
@@ -54,6 +56,7 @@
{
char *ret;
struct ast_flags flags = { 0 };
+ struct ast_cdr *cdr = chan->cdr;
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(variable);
AST_APP_ARG(options);
@@ -62,7 +65,7 @@
if (ast_strlen_zero(parse))
return -1;
- if (!chan->cdr)
+ if (!cdr)
return -1;
AST_STANDARD_APP_ARGS(args, parse);
@@ -70,7 +73,11 @@
if (!ast_strlen_zero(args.options))
ast_app_parse_options(cdr_func_options, &flags, NULL, args.options);
- ast_cdr_getvar(chan->cdr, args.variable, &ret, buf, len,
+ if (ast_test_flag(&flags, OPT_LAST))
+ while (cdr->next)
+ cdr = cdr->next;
+
+ ast_cdr_getvar(cdr, args.variable, &ret, buf, len,
ast_test_flag(&flags, OPT_RECURSIVE),
ast_test_flag(&flags, OPT_UNPARSED));
More information about the asterisk-commits
mailing list