X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_restore.c;h=150f1ee8fd5f53a578d683297386160e1d6e1f40;hb=801ce418130e78b4b6818f2c8af85c3ddae400ff;hp=770e22f23f61f23abe86a17ea282ec7530a5b41b;hpb=bac27f0cc0680c2b0e60c0621240074561838303;p=rrdtool.git diff --git a/src/rrd_restore.c b/src/rrd_restore.c index 770e22f..150f1ee 100644 --- a/src/rrd_restore.c +++ b/src/rrd_restore.c @@ -405,12 +405,11 @@ rrd_write(char *file_name, rrd_t *rrd) FILE *rrd_file=NULL; if (strcmp("-",file_name)==0){ - *rrd_file= *stdout; + rrd_file= stdout; } else { - int fd = open(file_name,O_RDWR|O_CREAT|O_EXCL); + int fd = open(file_name,O_RDWR|O_CREAT|O_EXCL,0666); if (fd == -1 || (rrd_file = fdopen(fd,"wb")) == NULL) { - rrd_set_error("creating '%s': %s",file_name,strerror(errno)); - rrd_free(rrd); + rrd_set_error("creating '%s': %s",file_name,rrd_strerror(errno)); if (fd != -1) close(fd); return(-1); @@ -424,8 +423,12 @@ rrd_write(char *file_name, rrd_t *rrd) fwrite(rrd->rra_def, sizeof(rra_def_t), rrd->stat_head->rra_cnt, rrd_file); - - fwrite(rrd->live_head, sizeof(live_head_t),1, rrd_file); + + /* maybe the xml hold an old formatted rrd */ + if (atoi(rrd->stat_head->version) < 3) + fwrite(&(rrd->live_head->last_up), sizeof(long),1, rrd_file); + else + fwrite(rrd->live_head, sizeof(live_head_t),1, rrd_file); fwrite( rrd->pdp_prep, sizeof(pdp_prep_t),rrd->stat_head->ds_cnt,rrd_file); @@ -513,6 +516,7 @@ rrd_restore(int argc, char **argv) /* a backwards compatibility routine that will parse the RRA params section * generated by the aberrant patch to 1.0.28. */ + void parse_patch1028_RRA_params(char **buf, rrd_t *rrd, int rra_index) { @@ -557,7 +561,7 @@ parse_FAILURES_history(char **buf, rrd_t *rrd, int rra_index, int ds_index) { char history[MAX_FAILURES_WINDOW_LEN + 1]; char *violations_array; - short i; + unsigned short i; /* 28 = MAX_FAILURES_WINDOW_LEN */ read_tag(buf, "history", "%28[0-1]", history);