X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=blobdiff_plain;f=src%2Frrd_first.c;h=4da1b3aa1f3574c7324edf82b877927c6fb76ac4;hp=0bd3f459ab9d7ac22945c1f2a1e13e5abf17f00f;hb=59d97685e48c93d65b36c68d5f762380c6d1ab4e;hpb=2a6a270edfda89b04722b42b57992907f871c671 diff --git a/src/rrd_first.c b/src/rrd_first.c index 0bd3f45..4da1b3a 100644 --- a/src/rrd_first.c +++ b/src/rrd_first.c @@ -1,11 +1,12 @@ /***************************************************************************** - * RRDtool 1.2.23 Copyright by Tobi Oetiker, 1997-2007 + * RRDtool 1.3.2 Copyright by Tobi Oetiker, 1997-2008 ***************************************************************************** * rrd_first Return ***************************************************************************** * Initial version by Burton Strauss, ntopSupport.com - 3/2005 *****************************************************************************/ +#include #include "rrd_tool.h" @@ -15,15 +16,15 @@ time_t rrd_first( { int target_rraindex = 0; char *endptr; + struct option long_options[] = { + {"rraindex", required_argument, 0, 129}, + {0, 0, 0, 0} + }; optind = 0; opterr = 0; /* initialize getopt */ while (1) { - static struct option long_options[] = { - {"rraindex", required_argument, 0, 129}, - {0, 0, 0, 0} - }; int option_index = 0; int opt; @@ -61,21 +62,19 @@ time_t rrd_first_r( const int rraindex) { off_t rra_start, timer; - time_t then; + time_t then = -1; rrd_t rrd; rrd_file_t *rrd_file; + rrd_init(&rrd); rrd_file = rrd_open(filename, &rrd, RRD_READONLY); if (rrd_file == NULL) { - rrd_set_error("could not open RRD"); - return (-1); + goto err_free; } if ((rraindex < 0) || (rraindex >= (int) rrd.stat_head->rra_cnt)) { rrd_set_error("invalid rraindex number"); - rrd_free(&rrd); - close(rrd_file->fd); - return (-1); + goto err_close; } rra_start = rrd_file->header_len; @@ -83,7 +82,7 @@ time_t rrd_first_r( (rra_start + (rrd.rra_ptr[rraindex].cur_row + 1) * rrd.stat_head->ds_cnt * sizeof(rrd_value_t)), SEEK_SET); - timer = -(rrd.rra_def[rraindex].row_cnt - 1); + timer = -(long)(rrd.rra_def[rraindex].row_cnt - 1); if (rrd.rra_ptr[rraindex].cur_row + 1 > rrd.rra_def[rraindex].row_cnt) { rrd_seek(rrd_file, rra_start, SEEK_SET); } @@ -91,9 +90,9 @@ time_t rrd_first_r( rrd.live_head->last_up % (rrd.rra_def[rraindex].pdp_cnt * rrd.stat_head->pdp_step)) + (timer * rrd.rra_def[rraindex].pdp_cnt * rrd.stat_head->pdp_step); - - rrd_free(&rrd); - close(rrd_file->fd); + err_close: rrd_close(rrd_file); + err_free: + rrd_free(&rrd); return (then); }