[asterisk-commits] tilghman: trunk r239152 - in /trunk: addons/ configs/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Jan 11 15:03:50 CST 2010


Author: tilghman
Date: Mon Jan 11 15:03:46 2010
New Revision: 239152

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=239152
Log:
Permit dates and times to be stored in timezones other than the default (typically, UTC)
(closes issue #16401)
 Reported by: lordmortis

Modified:
    trunk/addons/cdr_mysql.c
    trunk/configs/cdr_mysql.conf.sample

Modified: trunk/addons/cdr_mysql.c
URL: http://svnview.digium.com/svn/asterisk/trunk/addons/cdr_mysql.c?view=diff&rev=239152&r1=239151&r2=239152
==============================================================================
--- trunk/addons/cdr_mysql.c (original)
+++ trunk/addons/cdr_mysql.c Mon Jan 11 15:03:46 2010
@@ -66,7 +66,7 @@
 static const char name[] = "mysql";
 static const char config[] = "cdr_mysql.conf";
 
-static struct ast_str *hostname = NULL, *dbname = NULL, *dbuser = NULL, *password = NULL, *dbsock = NULL, *dbtable = NULL, *dbcharset = NULL;
+static struct ast_str *hostname = NULL, *dbname = NULL, *dbuser = NULL, *password = NULL, *dbsock = NULL, *dbtable = NULL, *dbcharset = NULL, *cdrzone = NULL;
 
 static struct ast_str *ssl_ca = NULL, *ssl_cert = NULL, *ssl_key = NULL;
 
@@ -247,7 +247,7 @@
 					struct timeval tv = ast_tvnow();
 					struct ast_tm tm;
 					char timestr[128];
-					ast_localtime(&tv, &tm, NULL);
+					ast_localtime(&tv, &tm, ast_str_strlen(cdrzone) ? ast_str_buffer(cdrzone) : NULL);
 					ast_strftime(timestr, sizeof(timestr), "%Y-%m-%d %T", &tm);
 					ast_cdr_setvar(cdr, "calldate", timestr, 0);
 					cdrname = "calldate";
@@ -444,6 +444,15 @@
 	res |= my_load_config_number(cfg, "global", "port", &dbport, 0);
 	res |= my_load_config_number(cfg, "global", "timeout", &timeout, 0);
 	res |= my_load_config_string(cfg, "global", "compat", &compat, "no");
+	res |= my_load_config_string(cfg, "global", "cdrzone", &cdrzone, "");
+	if (ast_str_strlen(cdrzone) == 0) {
+		for (; var; var = var->next) {
+			if (!strcasecmp(var->name, "usegmtime") && ast_true(var->value)) {
+				ast_str_set(&cdrzone, 0, "UTC");
+			}
+		}
+	}
+
 	if (ast_true(ast_str_buffer(compat))) {
 		calldate_compat = 1;
 	} else {
@@ -475,6 +484,7 @@
 	ast_debug(1, "Got dbname of %s\n", ast_str_buffer(dbname));
 	ast_debug(1, "Got password of %s\n", ast_str_buffer(password));
 	ast_debug(1, "%sunning in calldate compatibility mode\n", calldate_compat ? "R" : "Not r");
+	ast_debug(1, "Dates and times are localized to %s\n", S_OR(ast_str_buffer(cdrzone), "local timezone"));
 
 	if (dbcharset) {
 		ast_debug(1, "Got DB charset of %s\n", ast_str_buffer(dbcharset));

Modified: trunk/configs/cdr_mysql.conf.sample
URL: http://svnview.digium.com/svn/asterisk/trunk/configs/cdr_mysql.conf.sample?view=diff&rev=239152&r1=239151&r2=239152
==============================================================================
--- trunk/configs/cdr_mysql.conf.sample (original)
+++ trunk/configs/cdr_mysql.conf.sample Mon Jan 11 15:03:46 2010
@@ -18,6 +18,7 @@
 ;user=asteriskcdruser
 ;port=3306
 ;sock=/tmp/mysql.sock
+;timezone=UTC ; Previously called usegmtime
 ;
 ; If your system's locale differs from mysql database character set,
 ; cdr_mysql can damage non-latin characters in CDR variables. Use this




More information about the asterisk-commits mailing list