set SO_REUSEADDR on the listen socket -- kevin brintnall
[rrdtool.git] / src / rrd_open.c
index d061685..af91c7b 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.3rc7  Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3.2  Copyright by Tobi Oetiker, 1997-2008
  *****************************************************************************
  * rrd_open.c  Open an RRD File
  *****************************************************************************
@@ -34,7 +34,7 @@
 #endif
 
 /* get the address of the start of this page */
-#if defined USE_MADVISE || defined HAVE_POSIX_FADVISE 
+#if defined USE_MADVISE || defined HAVE_POSIX_FADVISE
 #ifndef PAGE_START
 #define PAGE_START(addr) ((addr)&(~(_page_size-1)))
 #endif
@@ -116,6 +116,9 @@ rrd_file_t *rrd_open(
         mm_flags |= MAP_NONBLOCK;   /* just populate ptes */
 #endif
     }
+#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__)
+    flags |= O_BINARY;
+#endif
 
     if ((rrd_file->fd = open(file_name, flags, mode)) < 0) {
         rrd_set_error("opening '%s': %s", file_name, rrd_strerror(errno));
@@ -360,18 +363,23 @@ void rrd_dontneed(
             rrd->rra_def[i].row_cnt * rrd->stat_head->ds_cnt *
             sizeof(rrd_value_t);
     }
+
+    if (dontneed_start < rrd_file->file_len) {
 #ifdef USE_MADVISE
-    madvise(rrd_file->file_start + dontneed_start,
-            rrd_file->file_len - dontneed_start, MADV_DONTNEED);
+           madvise(rrd_file->file_start + dontneed_start,
+                   rrd_file->file_len - dontneed_start, MADV_DONTNEED);
 #endif
 #ifdef HAVE_POSIX_FADVISE
-    posix_fadvise(rrd_file->fd, dontneed_start,
-                  rrd_file->file_len - dontneed_start, POSIX_FADV_DONTNEED);
+           posix_fadvise(rrd_file->fd, dontneed_start,
+                         rrd_file->file_len - dontneed_start,
+                         POSIX_FADV_DONTNEED);
 #endif
+    }
+
 #if defined DEBUG && DEBUG > 1
     mincore_print(rrd_file, "after");
 #endif
-#endif /* without madvise and posix_fadvise ist does not make much sense todo anything */
+#endif                          /* without madvise and posix_fadvise ist does not make much sense todo anything */
 }
 
 
@@ -429,7 +437,7 @@ off_t rrd_seek(
 
 /* Get current position in rrd_file.  */
 
-inline off_t rrd_tell(
+off_t rrd_tell(
     rrd_file_t *rrd_file)
 {
     return rrd_file->pos;
@@ -439,7 +447,7 @@ inline off_t rrd_tell(
 /* Read count bytes into buffer buf, starting at rrd_file->pos.
  * Returns the number of bytes read or <0 on error.  */
 
-inline ssize_t rrd_read(
+ssize_t rrd_read(
     rrd_file_t *rrd_file,
     void *buf,
     size_t count)
@@ -477,7 +485,7 @@ inline ssize_t rrd_read(
  * rrd_file->pos of rrd_file->fd.
  * Returns the number of bytes written or <0 on error.  */
 
-inline ssize_t rrd_write(
+ssize_t rrd_write(
     rrd_file_t *rrd_file,
     const void *buf,
     size_t count)
@@ -502,7 +510,7 @@ inline ssize_t rrd_write(
 
 /* flush all data pending to be written to FD.  */
 
-inline void rrd_flush(
+void rrd_flush(
     rrd_file_t *rrd_file)
 {
     if (fdatasync(rrd_file->fd) != 0) {
@@ -563,4 +571,3 @@ void rrd_freemem(
 {
     free(mem);
 }
-