From: oetiker Date: Wed, 16 Nov 2011 16:49:10 +0000 (+0000) Subject: dbi_result_get_datetime_idx() return timestamp in UTC, but time axis on graph suppose... X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=commitdiff_plain;h=470b43490f698918399f0fb5505a9dfd5df6a4e2 dbi_result_get_datetime_idx() return timestamp in UTC, but time axis on graph supposed to be in local time. fix provided in #321 --This line, and those below, will be ignored-- M trunk/program/src/rrd_fetch_libdbi.c M branches/1.4/program/src/rrd_fetch_libdbi.c git-svn-id: svn://svn.oetiker.ch/rrdtool/trunk/program@2208 a5681a0c-68f1-0310-ab6d-d61299d08faa --- diff --git a/src/rrd_fetch_libdbi.c b/src/rrd_fetch_libdbi.c index b4f0fc7..71a6bca 100644 --- a/src/rrd_fetch_libdbi.c +++ b/src/rrd_fetch_libdbi.c @@ -389,6 +389,7 @@ rrd_fetch_fn_libdbi( unsigned long minstepsize=300; /* by default assume unixtimestamp */ int isunixtime=1; + long gmt_offset=0; /* the result-set */ long r_timestamp,l_timestamp,d_timestamp; double r_value,l_value,d_value; @@ -459,7 +460,13 @@ rrd_fetch_fn_libdbi( return -1; } /* if we have leading '*', then we have a TIMEDATE Field*/ - if (table_help.timestamp[0]=='*') { isunixtime=0; table_help.timestamp++; } + if (table_help.timestamp[0]=='*') { + struct tm tm; + time_t t=time(NULL); + localtime_r(&t,&tm); + gmt_offset=tm.tm_gmtoff; + isunixtime=0; table_help.timestamp++; + } /* hex-unescape the value */ if(_inline_unescape(table_help.timestamp)) { return -1; } @@ -585,6 +592,7 @@ rrd_fetch_fn_libdbi( while((r_status=_sql_fetchrow(&table_help,&r_timestamp,&r_value,derive))>0) { /* processing of value */ /* calculate index for the timestamp */ + r_timestamp-=gmt_offset; idx=(r_timestamp-(*start))/(*step); /* some out of bounds checks on idx */ if (idx<0) { idx=0;}