From 611a846ac93a8bb2244214f314a7154835b54e91 Mon Sep 17 00:00:00 2001 From: oetiker Date: Wed, 16 Nov 2011 16:49:10 +0000 Subject: [PATCH] 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/branches/1.4@2208 a5681a0c-68f1-0310-ab6d-d61299d08faa --- program/src/rrd_fetch_libdbi.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/program/src/rrd_fetch_libdbi.c b/program/src/rrd_fetch_libdbi.c index 6a220260..21fbc083 100644 --- a/program/src/rrd_fetch_libdbi.c +++ b/program/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;} -- 2.30.2