X-Git-Url: https://git.octo.it/?a=blobdiff_plain;ds=sidebyside;f=src%2Frrd_restore.c;h=ccac072d4e29992db7fe5a01ce5c122225370310;hb=ed9474147fcf5bace60fd36b5c3ca3b4f1f8ac53;hp=207986d89d617f5dd4a052665c0920e77789c735;hpb=285da1fa16e80919db972b1d7021c0b4705bedb1;p=rrdtool.git diff --git a/src/rrd_restore.c b/src/rrd_restore.c index 207986d..ccac072 100644 --- a/src/rrd_restore.c +++ b/src/rrd_restore.c @@ -6,6 +6,7 @@ #include "rrd_tool.h" #include "rrd_rpncalc.h" +#include /* Prototypes */ @@ -406,9 +407,11 @@ rrd_write(char *file_name, rrd_t *rrd) if (strcmp("-",file_name)==0){ *rrd_file= *stdout; } else { - if ((rrd_file = fopen(file_name,"wb")) == NULL ) { - rrd_set_error("creating '%s': %s",file_name,strerror(errno)); - rrd_free(rrd); + 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,rrd_strerror(errno)); + if (fd != -1) + close(fd); return(-1); } } @@ -509,6 +512,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) { @@ -553,7 +557,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);