diff --git a/src/rrd_open.c b/src/rrd_open.c
index 98a52e001b6322c28b6768bf400b9d60eefbdf0d..23914826fc4ff59fab4614f4199503f3f1f04967 100644 (file)
--- a/src/rrd_open.c
+++ b/src/rrd_open.c
/*****************************************************************************
- * RRDtool 1.2.0 Copyright by Tobi Oetiker, 1997-2005
+ * RRDtool 1.2.12 Copyright by Tobi Oetiker, 1997-2005
*****************************************************************************
* rrd_open.c Open an RRD File
*****************************************************************************
rrd_init(rrd);
if (rdwr == RRD_READONLY) {
-#if defined(WIN32)
mode = "rb";
-#else
- mode = "r";
-#endif
} else {
-#if defined(WIN32)
mode = "rb+";
-#else
- mode = "r+";
-#endif
}
if (((*in_file) = fopen(file_name,mode)) == NULL ){
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){
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);
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);
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 */