From 2d18de5f8f259e5a976e9ee2d06c4d6a310db397 Mon Sep 17 00:00:00 2001 From: Paul Belanger Date: Tue, 13 Sep 2011 14:25:43 +0000 Subject: [PATCH] Clean up cdr.conf parsing for [csv] section Review: https://reviewboard.asterisk.org/r/1427/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@335556 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- UPGRADE.txt | 2 +- cdr/cdr_csv.c | 49 ++++++++++++++++++------------------------------- 2 files changed, 19 insertions(+), 32 deletions(-) diff --git a/UPGRADE.txt b/UPGRADE.txt index e337850312..3aa6cb3101 100644 --- a/UPGRADE.txt +++ b/UPGRADE.txt @@ -32,7 +32,7 @@ Configuration Files: parses configuration files. This makes configuration files more consistent with what is expected across modules. - - cdr.conf: [general] section + - cdr.conf: [general] and [csv] sections - dnsmgr.conf SIP diff --git a/cdr/cdr_csv.c b/cdr/cdr_csv.c index 068b7a9a2f..b629290ebe 100644 --- a/cdr/cdr_csv.c +++ b/cdr/cdr_csv.c @@ -50,7 +50,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #define DATE_FORMAT "%Y-%m-%d %T" static int usegmtime = 0; -static int accountlogs; +static int accountlogs = 1; static int loguniqueid = 0; static int loguserfield = 0; static int loaded = 0; @@ -95,52 +95,38 @@ AST_MUTEX_DEFINE_STATIC(acf_lock); static int load_config(int reload) { struct ast_config *cfg; - struct ast_variable *var; - const char *tmp; + struct ast_variable *v; struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 }; if (!(cfg = ast_config_load(config, config_flags)) || cfg == CONFIG_STATUS_FILEINVALID) { ast_log(LOG_WARNING, "unable to load config: %s\n", config); return 0; - } else if (cfg == CONFIG_STATUS_FILEUNCHANGED) + } else if (cfg == CONFIG_STATUS_FILEUNCHANGED) { return 1; + } accountlogs = 1; usegmtime = 0; loguniqueid = 0; loguserfield = 0; - if (!(var = ast_variable_browse(cfg, "csv"))) { + if (!(v = ast_variable_browse(cfg, "csv"))) { ast_config_destroy(cfg); return 0; } - if ((tmp = ast_variable_retrieve(cfg, "csv", "usegmtime"))) { - usegmtime = ast_true(tmp); - if (usegmtime) - ast_debug(1, "logging time in GMT\n"); + for (; v; v = v->next) { + if (!strcasecmp(v->name, "usegmtime")) { + usegmtime = ast_true(v->value); + } else if (!strcasecmp(v->name, "accountlogs")) { + /* Turn on/off separate files per accountcode. Default is on (as before) */ + accountlogs = ast_true(v->value); + } else if (!strcasecmp(v->name, "loguniqueid")) { + loguniqueid = ast_true(v->value); + } else if (!strcasecmp(v->name, "loguserfield")) { + loguserfield = ast_true(v->value); + } } - - /* Turn on/off separate files per accountcode. Default is on (as before) */ - if ((tmp = ast_variable_retrieve(cfg, "csv", "accountlogs"))) { - accountlogs = ast_true(tmp); - if (accountlogs) { - ast_debug(1, "logging in separate files per accountcode\n"); - } - } - - if ((tmp = ast_variable_retrieve(cfg, "csv", "loguniqueid"))) { - loguniqueid = ast_true(tmp); - if (loguniqueid) - ast_debug(1, "logging CDR field UNIQUEID\n"); - } - - if ((tmp = ast_variable_retrieve(cfg, "csv", "loguserfield"))) { - loguserfield = ast_true(tmp); - if (loguserfield) - ast_debug(1, "logging CDR user-defined field\n"); - } - ast_config_destroy(cfg); return 1; } @@ -337,8 +323,9 @@ static int load_module(void) { int res; - if(!load_config(0)) + if (!load_config(0)) { return AST_MODULE_LOAD_DECLINE; + } if ((res = ast_cdr_register(name, ast_module_info->description, csv_log))) { ast_log(LOG_ERROR, "Unable to register CSV CDR handling\n");