/*****************************************************************************
- * RRDtool 1.2.1 Copyright by Tobi Oetiker, 1997-2005
+ * RRDtool 1.2.20 Copyright by Tobi Oetiker, 1997-2007
*****************************************************************************
* rrd_open.c Open an RRD File
*****************************************************************************
if ((MYVAR = malloc(sizeof(MYVART) * MYCNT)) == NULL) {\
rrd_set_error("" #MYVAR " malloc"); \
fclose(*in_file); \
- return (-1); } \
+ return (-1); } \
fread(MYVAR,sizeof(MYVART),MYCNT, *in_file);
MYFREAD(rrd->stat_head, stat_head_t, 1)
- version = atoi(rrd->stat_head->version);
+ /* lets see if the first read worked */
+ if (ferror( *in_file ) || feof(*in_file)) {
+ rrd_set_error("reading the cookie off %s faild",file_name);
+ fclose(*in_file);
+ return(-1);
+ }
/* lets do some test if we are on track ... */
if (strncmp(rrd->stat_head->cookie,RRD_COOKIE,4) != 0){
rrd_set_error("'%s' is not an RRD file",file_name);
free(rrd->stat_head);
+ rrd->stat_head = NULL;
fclose(*in_file);
return(-1);}
- if (version > atoi(RRD_VERSION)){
- rrd_set_error("can't handle RRD file version %s",
- rrd->stat_head->version);
+ if (rrd->stat_head->float_cookie != FLOAT_COOKIE){
+ rrd_set_error("This RRD was created on other architecture");
free(rrd->stat_head);
+ rrd->stat_head = NULL;
fclose(*in_file);
return(-1);}
- if (rrd->stat_head->float_cookie != FLOAT_COOKIE){
- rrd_set_error("This RRD was created on other architecture");
+ version = atoi(rrd->stat_head->version);
+
+ if (version > atoi(RRD_VERSION)){
+ rrd_set_error("can't handle RRD file version %s",
+ rrd->stat_head->version);
free(rrd->stat_head);
+ rrd->stat_head = NULL;
fclose(*in_file);
return(-1);}
+
MYFREAD(rrd->ds_def, ds_def_t, rrd->stat_head->ds_cnt)
MYFREAD(rrd->rra_def, rra_def_t, rrd->stat_head->rra_cnt)
/* handle different format for the live_head */