static char *builtin_function_cdr_read(struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len) { char *ret; char *mydata; int argc; char *argv[2]; int recursive = 0; if (!data || ast_strlen_zero(data)) return NULL; if (!chan->cdr) return NULL; mydata = ast_strdupa(data); argc = ast_separate_app_args(mydata, '|', argv, sizeof(argv) / sizeof(argv[0])); /* check for a trailing flags argument */ if (argc > 1) { argc--; if (strchr(argv[argc], 'r')) recursive = 1; } ast_cdr_getvar(chan->cdr, argv[0], &ret, buf, len, recursive); return ret; }