From: oetiker Date: Tue, 2 Apr 2002 19:37:54 +0000 (+0000) Subject: rrd restore should not burn down existing files -- Paul Vixie X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=d1d774b37f93718829addf71d7af43b295eba587;p=rrdtool.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 207986d..fa5e412 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); } }