[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