fixed DEF_NAM_FMT definition
[rrdtool.git] / src / rrd_restore.c
index 207986d..6d7fdf8 100644 (file)
@@ -6,6 +6,7 @@
 
 #include "rrd_tool.h"
 #include "rrd_rpncalc.h"
+#include <fcntl.h>
 
 /* 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 ) {
+      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);
+        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)
 {