X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_first.c;h=3782d4ab9c35f7ba9bc042a90a192cf3949e8552;hb=818549a636c390fb4a8390a7e2195a52293cd56b;hp=0d16a31d3e484645e8b0ab397c3e2f63853c954c;hpb=ba6406d3684dcfc5e4dc4491f4f76562613bb0b6;p=rrdtool.git diff --git a/src/rrd_first.c b/src/rrd_first.c index 0d16a31..3782d4a 100644 --- a/src/rrd_first.c +++ b/src/rrd_first.c @@ -1,5 +1,5 @@ /***************************************************************************** - * RRDtool 1.0.49 Copyright Tobias Oetiker, 1997 - 2005 + * RRDtool 1.2.23 Copyright by Tobi Oetiker, 1997-2007 ***************************************************************************** * rrd_first Return ***************************************************************************** @@ -14,6 +14,7 @@ rrd_first(int argc, char **argv) { int target_rraindex=0; char *endptr; + optind = 0; opterr = 0; /* initialize getopt */ while (1){ static struct option long_options[] = @@ -54,24 +55,27 @@ rrd_first(int argc, char **argv) time_t rrd_first_r(const char *filename, const int rraindex) { - long rra_start, + off_t rra_start, timer; time_t then; - FILE *in_file; rrd_t rrd; + rrd_file_t *rrd_file; - if(rrd_open(filename,&in_file,&rrd, RRD_READONLY)==-1){ + rrd_file = rrd_open(filename,&rrd, RRD_READONLY); + if (rrd_file == NULL) { rrd_set_error("could not open RRD"); return(-1); } 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); } - rra_start = ftell(in_file); - fseek(in_file, + rra_start = rrd_file->header_len; + rrd_seek(rrd_file, (rra_start + (rrd.rra_ptr[rraindex].cur_row+1) * rrd.stat_head->ds_cnt * @@ -79,7 +83,7 @@ rrd_first_r(const char *filename, const int rraindex) SEEK_SET); timer = - (rrd.rra_def[rraindex].row_cnt-1); if (rrd.rra_ptr[rraindex].cur_row + 1 > rrd.rra_def[rraindex].row_cnt) { - fseek(in_file,rra_start,SEEK_SET); + rrd_seek(rrd_file,rra_start,SEEK_SET); } then = (rrd.live_head->last_up - rrd.live_head->last_up % @@ -88,10 +92,8 @@ rrd_first_r(const char *filename, const int rraindex) rrd.rra_def[rraindex].pdp_cnt*rrd.stat_head->pdp_step); rrd_free(&rrd); - fclose(in_file); + close(rrd_file->fd); + rrd_close(rrd_file); return(then); } - - -