Fri May 26 01:48:52 2006

Asterisk developer's documentation


func_cdr.c File Reference

Call Detail Record related dialplan functions. More...

#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include "asterisk.h"
#include "asterisk/channel.h"
#include "asterisk/pbx.h"
#include "asterisk/logger.h"
#include "asterisk/utils.h"
#include "asterisk/app.h"
#include "asterisk/cdr.h"

Include dependency graph for func_cdr.c:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

static char * builtin_function_cdr_read (struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len)
static void builtin_function_cdr_write (struct ast_channel *chan, char *cmd, char *data, const char *value)

Variables

static struct ast_custom_function cdr_function


Detailed Description

Call Detail Record related dialplan functions.

Definition in file func_cdr.c.


Function Documentation

static char* builtin_function_cdr_read struct ast_channel chan,
char *  cmd,
char *  data,
char *  buf,
size_t  len
[static]
 

Definition at line 40 of file func_cdr.c.

References ast_app_separate_args(), ast_cdr_getvar(), ast_strdupa, ast_strlen_zero(), and ast_channel::cdr.

00041 {
00042    char *ret;
00043    char *mydata;
00044    int argc;
00045    char *argv[2];
00046    int recursive = 0;
00047 
00048    if (ast_strlen_zero(data))
00049       return NULL;
00050    
00051    if (!chan->cdr)
00052       return NULL;
00053 
00054    mydata = ast_strdupa(data);
00055    argc = ast_app_separate_args(mydata, '|', argv, sizeof(argv) / sizeof(argv[0]));
00056 
00057    /* check for a trailing flags argument */
00058    if (argc > 1) {
00059       argc--;
00060       if (strchr(argv[argc], 'r'))
00061          recursive = 1;
00062    }
00063 
00064    ast_cdr_getvar(chan->cdr, argv[0], &ret, buf, len, recursive);
00065 
00066    return ret;
00067 }

static void builtin_function_cdr_write struct ast_channel chan,
char *  cmd,
char *  data,
const char *  value
[static]
 

Definition at line 69 of file func_cdr.c.

References ast_app_separate_args(), ast_cdr_setaccount(), ast_cdr_setuserfield(), ast_cdr_setvar(), ast_strdupa, ast_strlen_zero(), and ast_channel::cdr.

00070 {
00071    char *mydata;
00072    int argc;
00073    char *argv[2];
00074    int recursive = 0;
00075 
00076    if (ast_strlen_zero(data) || !value)
00077       return;
00078    
00079    mydata = ast_strdupa(data);
00080    argc = ast_app_separate_args(mydata, '|', argv, sizeof(argv) / sizeof(argv[0]));
00081 
00082    /* check for a trailing flags argument */
00083    if (argc > 1) {
00084       argc--;
00085       if (strchr(argv[argc], 'r'))
00086          recursive = 1;
00087    }
00088 
00089    if (!strcasecmp(argv[0], "accountcode"))
00090       ast_cdr_setaccount(chan, value);
00091    else if (!strcasecmp(argv[0], "userfield"))
00092       ast_cdr_setuserfield(chan, value);
00093    else if (chan->cdr)
00094       ast_cdr_setvar(chan->cdr, argv[0], value, recursive);
00095 }


Variable Documentation

struct ast_custom_function cdr_function [static]
 

Definition at line 100 of file func_cdr.c.


Generated on Fri May 26 01:48:53 2006 for Asterisk - the Open Source PBX by  doxygen 1.4.6