X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_update.c;h=1230753b602fdb12ab7bfd18568292fbe8a5bdc1;hb=aa4d951ab71eb7fe57840c3baaddf36809806aef;hp=5411840f991b688b27fd8f407e8e661b3d134bed;hpb=5a7eb5b62b485b61ddb80a40ef22f4337cf2289f;p=rrdtool.git diff --git a/src/rrd_update.c b/src/rrd_update.c index 5411840..1230753 100644 --- a/src/rrd_update.c +++ b/src/rrd_update.c @@ -1,5 +1,5 @@ /***************************************************************************** - * RRDtool 1.2.5 Copyright by Tobi Oetiker, 1997-2005 + * RRDtool 1.2.10 Copyright by Tobi Oetiker, 1997-2005 ***************************************************************************** * rrd_update.c RRD Update Function ***************************************************************************** @@ -13,7 +13,7 @@ #include #endif -#if defined(WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) +#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) #include #include #include @@ -25,7 +25,7 @@ #include "rrd_is_thread_safe.h" #include "unused.h" -#if defined(WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) +#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) /* * WIN32 does not have gettimeofday and struct timeval. This is a quick and dirty * replacement. @@ -95,7 +95,7 @@ int main(int argc, char **argv){ rrd_update(argc,argv); if (rrd_test_error()) { - printf("RRDtool 1.2.5 Copyright by Tobi Oetiker, 1997-2005\n\n" + printf("RRDtool " PACKAGE_VERSION " Copyright by Tobi Oetiker, 1997-2005\n\n" "Usage: rrdupdate filename\n" "\t\t\t[--template|-t ds-name:ds-name:...]\n" "\t\t\ttime|N:value[:value...]\n\n" @@ -252,9 +252,9 @@ _rrd_update(char *filename, char *template, int argc, char **argv, FILE *rrd_file; rrd_t rrd; - time_t current_time; - time_t rra_time; /* time of update for a RRA */ - unsigned long current_time_usec; /* microseconds part of current time */ + time_t current_time = 0; + time_t rra_time = 0; /* time of update for a RRA */ + unsigned long current_time_usec=0;/* microseconds part of current time */ struct timeval tmp_time; /* used for time conversion */ char **updvals; @@ -595,10 +595,18 @@ _rrd_update(char *filename, char *template, int argc, char **argv, for(i=0;ids_cnt;i++){ enum dst_en dst_idx; dst_idx= dst_conv(rrd.ds_def[i].dst); - /* NOTE: DST_CDEF should never enter this if block, because - * updvals[i+1][0] is initialized to 'U'; unless the caller - * accidently specified a value for the DST_CDEF. To handle - * this case, an extra check is required. */ + + /* make sure we do not build diffs with old last_ds values */ + if(rrd.ds_def[i].par[DS_mrhb_cnt].u_cnt < interval + && ( dst_idx == DST_COUNTER || dst_idx == DST_DERIVE)){ + strncpy(rrd.pdp_prep[i].last_ds,"U",LAST_DS_LEN-1); + } + + /* NOTE: DST_CDEF should never enter this if block, because + * updvals[i+1][0] is initialized to 'U'; unless the caller + * accidently specified a value for the DST_CDEF. To handle + * this case, an extra check is required. */ + if((updvals[i+1][0] != 'U') && (dst_idx != DST_CDEF) && rrd.ds_def[i].par[DS_mrhb_cnt].u_cnt >= interval) { @@ -1433,7 +1441,7 @@ LockRRD(FILE *rrdfile) rrd_fd = fileno(rrdfile); { -#if defined(WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) +#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) struct _stat st; if ( _fstat( rrd_fd, &st ) == 0 ) {