time_t now;
char somestring[255];
rrd_value_t my_cdp;
- long rra_base, rra_start, rra_next;
- FILE *in_file;
+ off_t rra_base, rra_start, rra_next;
+ rrd_file_t *rrd_file;
FILE *out_file;
rrd_t rrd;
rrd_value_t value;
struct tm tm;
- if(rrd_open(filename, &in_file,&rrd, RRD_READONLY)==-1){
+ rrd_file = rrd_open(filename, &rrd, RRD_READONLY);
+ if (rrd_file == NULL) {
rrd_free(&rrd);
return(-1);
}
fputs("<!-- Round Robin Archives -->", out_file);
- rra_base=ftell(in_file);
+ rra_base = rrd_file->header_len;
rra_next = rra_base;
for(i=0;i<rrd.stat_head->rra_cnt;i++){
fprintf(out_file, "\t\t</cdp_prep>\n");
fprintf(out_file, "\t\t<database>\n");
- fseek(in_file,(rra_start
+ rrd_seek(rrd_file,(rra_start
+(rrd.rra_ptr[i].cur_row+1)
* rrd.stat_head->ds_cnt
* sizeof(rrd_value_t)),SEEK_SET);
for(ix=0;ix<rrd.rra_def[i].row_cnt;ix++){
ii++;
if (ii>=rrd.rra_def[i].row_cnt) {
- fseek(in_file,rra_start,SEEK_SET);
+ rrd_seek(rrd_file,rra_start,SEEK_SET);
ii=0; /* wrap if max row cnt is reached */
}
now = (rrd.live_head->last_up
# error "Need strftime"
#endif
fprintf(out_file, "\t\t\t<!-- %s / %d --> <row>",somestring,(int)now);
- for(iii=0;iii<rrd.stat_head->ds_cnt;iii++){
- fread(&my_cdp,sizeof(rrd_value_t),1,in_file);
+ for(iii=0;iii<rrd.stat_head->ds_cnt;iii++){
+ rrd_read(rrd_file, &my_cdp,sizeof(rrd_value_t)*1);
if (isnan(my_cdp)){
fprintf(out_file, "<v> NaN </v>");
} else {
fprintf(out_file, "</row>\n");
}
fprintf(out_file, "\t\t</database>\n\t</rra>\n");
-
+
}
fprintf(out_file, "</rrd>\n");
rrd_free(&rrd);
- fclose(in_file);
+ close(rrd_file->fd);
if (out_file != stdout)
{
fclose(out_file);
return(0);
}
-
-
-