From: Tobias Oetiker Date: Tue, 2 Apr 2002 19:37:54 +0000 (+0000) Subject: rrd restore should not burn down existing files -- Paul Vixie X-Git-Tag: 1.2rc1~224 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=965b2041261e3166b2196e90a5b1af7565d3a2b7;p=thirdparty%2Frrdtool-1.x.git rrd restore should not burn down existing files -- Paul Vixie git-svn-id: svn://svn.oetiker.ch/rrdtool/trunk/program@110 a5681a0c-68f1-0310-ab6d-d61299d08faa --- diff --git a/src/rrd_restore.c b/src/rrd_restore.c index 207986d8..fa5e412f 100644 --- a/src/rrd_restore.c +++ b/src/rrd_restore.c @@ -406,9 +406,12 @@ 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); + 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); } }