diff -rdup rrdtool-trunk.sent-20070524-1726/src/rrd_dump.c rrdtool-trunk/src/rrd_dump.c --- rrdtool-trunk.sent-20070524-1726/src/rrd_dump.c 2007-05-24 16:01:53.000000000 +0200 +++ rrdtool-trunk/src/rrd_dump.c 2007-05-24 20:24:45.000000000 +0200 @@ -83,7 +83,7 @@ int rrd_dump_r( rrd_value_t value; struct tm tm; - rrd_file = rrd_open(filename, &rrd, RRD_READONLY|RRD_READAHEAD); + rrd_file = rrd_open(filename, &rrd, RRD_READONLY | RRD_READAHEAD); if (rrd_file == NULL) { rrd_free(&rrd); return (-1); iff -rdup rrdtool-trunk.sent-20070524-1726/src/rrd_fetch.c rrdtool-trunk/src/rrd_fetch.c --- rrdtool-trunk.sent-20070524-1726/src/rrd_fetch.c 2007-05-24 17:04:12.000000000 +0200 +++ rrdtool-trunk/src/rrd_fetch.c 2007-05-24 20:24:45.000000000 +0200 @@ -378,10 +378,9 @@ int rrd_fetch_fn( else rra_pointer = rrd.rra_ptr[chosen_rra].cur_row + 1 + start_offset; - if (rrd_seek(rrd_file, (rra_base - + (rra_pointer - * (*ds_cnt) - * sizeof(rrd_value_t))), SEEK_SET) != 0) { + if (rrd_seek(rrd_file, (rra_base + (rra_pointer * (*ds_cnt) + * sizeof(rrd_value_t))), + SEEK_SET) != 0) { rrd_set_error("seek error in RRA"); for (i = 0; (unsigned) i < *ds_cnt; i++) free((*ds_namv)[i]); @@ -429,8 +428,7 @@ int rrd_fetch_fn( * be wrapped*/ if (rra_pointer >= (signed) rrd.rra_def[chosen_rra].row_cnt) { rra_pointer -= rrd.rra_def[chosen_rra].row_cnt; - if (rrd_seek(rrd_file, (rra_base + rra_pointer - * (*ds_cnt) + if (rrd_seek(rrd_file, (rra_base + rra_pointer * (*ds_cnt) * sizeof(rrd_value_t)), SEEK_SET) != 0) { rrd_set_error("wrap seek in RRA did fail"); diff -rdup rrdtool-trunk.sent-20070524-1726/src/rrd_open.c rrdtool-trunk/src/rrd_open.c --- rrdtool-trunk.sent-20070524-1726/src/rrd_open.c 2007-05-24 17:26:17.000000000 +0200 +++ rrdtool-trunk/src/rrd_open.c 2007-05-24 20:27:20.000000000 +0200 @@ -302,13 +302,16 @@ rrd_file_t *rrd_open( int rrd_close( rrd_file_t *rrd_file) { - int ret = 0; + int ret; #ifdef HAVE_MMAP ret = munmap(rrd_file->file_start, rrd_file->file_len); -// if (ret != 0) -// rrd_set_error("munmap rrd_file"); + if (ret != 0) + rrd_set_error("munmap rrd_file: %s", rrd_strerror(errno)); #endif + ret = close(rrd_file->fd); + if (ret != 0) + rrd_set_error("closing file: %s", rrd_strerror(errno)); free(rrd_file); rrd_file = NULL; return ret; @@ -377,18 +380,12 @@ ssize_t rrd_write( const void *buf, size_t count) { - ssize_t ret = count; - #ifdef HAVE_MMAP - char *off, *new_pos; - - off = rrd_file->file_start + rrd_file->pos; - new_pos = memmove(rrd_file->file_start + rrd_file->pos, buf, count); - ret = new_pos - off; + memmove(rrd_file->file_start + rrd_file->pos, buf, count); + return count; /* mimmic write() semantics */ #else - ret = write(rrd_file->fd, buf, count); + return write(rrd_file->fd, buf, count); #endif - return ret; } /* flush all data pending to be written to FD. */ @@ -427,6 +424,7 @@ void rrd_free( free(rrd->pdp_prep); free(rrd->cdp_prep); free(rrd->rrd_value); +//XXX: ? rrd_init(rrd); #endif } diff -rdup rrdtool-trunk.sent-20070524-1726/src/rrd_resize.c rrdtool-trunk/src/rrd_resize.c --- rrdtool-trunk.sent-20070524-1726/src/rrd_resize.c 2007-05-24 14:51:21.000000000 +0200 +++ rrdtool-trunk/src/rrd_resize.c 2007-05-24 20:24:45.000000000 +0200 @@ -82,7 +82,7 @@ int rrd_resize( return (-1); } - rrd_out_file = rrd_open(outfilename, &rrdnew, RRD_READWRITE|RRD_CREAT); + rrd_out_file = rrd_open(outfilename, &rrdnew, RRD_READWRITE | RRD_CREAT); if (rrd_out_file == NULL) { rrd_set_error("Can't create '%s': %s", outfilename, rrd_strerror(errno)); diff -rdup rrdtool-trunk.sent-20070524-1726/src/rrd_update.c rrdtool-trunk/src/rrd_update.c --- rrdtool-trunk.sent-20070524-1726/src/rrd_update.c 2007-05-24 15:58:48.000000000 +0200 +++ rrdtool-trunk/src/rrd_update.c 2007-05-24 20:27:10.000000000 +0200 @@ -105,7 +105,7 @@ static info_t *write_RRA_row( (rrd_file, &(rrd->cdp_prep[cdp_idx].scratch[CDP_scratch_idx].u_val), sizeof(rrd_value_t) * 1) != sizeof(rrd_value_t) * 1) { - rrd_set_error("writing rrd"); + rrd_set_error("writing rrd: %s", rrd_strerror(errno)); return 0; } *rra_current += sizeof(rrd_value_t); @@ -1458,10 +1458,12 @@ int _rrd_update( free(rra_step_cnt); rpnstack_free(&rpnstack); -#ifdef HAVE_MMAP +#if 0 //def HAVE_MMAP if (munmap(rrd_file->file_start, rrd_file->file_len) == -1) { rrd_set_error("error writing(unmapping) file: %s", filename); } +#else + rrd_flush(rrd_file); //XXX: really needed? #endif /* if we got here and if there is an error and if the file has not been * written to, then close things up and return. */ @@ -1609,20 +1611,9 @@ int _rrd_update( return (-1); } #endif - close(rrd_file->fd); - } - - /* OK now close the files and free the memory */ - if (close(rrd_file->fd) != 0) { - rrd_set_error("closing rrd"); - free(updvals); - free(tmpl_idx); - rrd_free(&rrd); - free(pdp_temp); - free(pdp_new); - return (-1); } + rrd_close(rrd_file); rrd_free(&rrd); free(updvals); free(tmpl_idx);