/*****************************************************************************
- * RRDtool 1.0.33 Copyright Tobias Oetiker, 1997 - 2000
+ * RRDtool 1.1.x Copyright Tobias Oetiker, 1997 - 2002
*****************************************************************************
* rrd_restore.c creates new rrd from data dumped by rrd_dump.c
*****************************************************************************/
#include "rrd_tool.h"
#include "rrd_rpncalc.h"
+#include <fcntl.h>
/* Prototypes */
FILE *rrd_file=NULL;
if (strcmp("-",file_name)==0){
- *rrd_file= *stdout;
+ 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);
}
}
/* 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)
{
{
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);