From ffb7a752a1a72719abc5b38ae0ee87d4d4f7333d Mon Sep 17 00:00:00 2001 From: oetiker Date: Tue, 2 Apr 2002 19:37:54 +0000 Subject: [PATCH] rrd restore should not burn down existing files -- Paul Vixie git-svn-id: svn://svn.oetiker.ch/rrdtool/trunk@110 a5681a0c-68f1-0310-ab6d-d61299d08faa --- program/src/rrd_restore.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/program/src/rrd_restore.c b/program/src/rrd_restore.c index 207986d8..fa5e412f 100644 --- a/program/src/rrd_restore.c +++ b/program/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); } } -- 2.30.2