make MAP_PRIVATE conditional on AIX not being defined ... should fix part of #216
[rrdtool.git] / src / rrd_open.c
index 7d6ddc9..5f3723f 100644 (file)
@@ -1,24 +1,26 @@
 /*****************************************************************************
- * RRDtool 1.4.2  Copyright by Tobi Oetiker, 1997-2009
+ * RRDtool 1.4.3  Copyright by Tobi Oetiker, 1997-2010
  *****************************************************************************
  * rrd_open.c  Open an RRD File
  *****************************************************************************
  * $Id$
  *****************************************************************************/
 
+#include "rrd_tool.h"
+#include "unused.h"
+
 #ifdef WIN32
 #include <stdlib.h>
 #include <fcntl.h>
 #include <sys/stat.h>
 #endif
 
+
 #ifdef HAVE_BROKEN_MS_ASYNC
 #include <sys/types.h>
 #include <utime.h>
 #endif
 
-#include "rrd_tool.h"
-#include "unused.h"
 #define MEMBLK 8192
 
 #ifdef WIN32
@@ -156,7 +158,9 @@ rrd_file_t *rrd_open(
     if (rdwr & RRD_READONLY) {
         flags |= O_RDONLY;
 #ifdef HAVE_MMAP
+# if !defined(AIX)
         rrd_simple_file->mm_flags = MAP_PRIVATE;
+# endif
 # ifdef MAP_NORESERVE
         rrd_simple_file->mm_flags |= MAP_NORESERVE;  /* readonly, so no swap backing needed */
 # endif
@@ -172,6 +176,9 @@ rrd_file_t *rrd_open(
         if (rdwr & RRD_CREAT) {
             flags |= (O_CREAT | O_TRUNC);
         }
+        if (rdwr & RRD_EXCL) {
+            flags |= O_EXCL;
+        }
     }
     if (rdwr & RRD_READAHEAD) {
 #ifdef MAP_POPULATE
@@ -683,7 +690,7 @@ ssize_t rrd_write(
 /* this is a leftover from the old days, it serves no purpose
    and is therefore turned into a no-op */
 void rrd_flush(
-    rrd_file_t *rrd_file  __attribute__((unused)))
+    rrd_file_t UNUSED(*rrd_file))
 {
 }
 
@@ -745,10 +752,10 @@ void rrd_freemem(
  * aligning RRAs within stripes, or other performance enhancements
  */
 void rrd_notify_row(
-    rrd_file_t *rrd_file  __attribute__((unused)),
-    int rra_idx  __attribute__((unused)),
-    unsigned long rra_row  __attribute__((unused)),
-    time_t rra_time  __attribute__((unused)))
+    rrd_file_t UNUSED(*rrd_file),
+    int UNUSED(rra_idx),
+    unsigned long UNUSED(rra_row),
+    time_t UNUSED(rra_time))
 {
 }
 
@@ -760,8 +767,8 @@ void rrd_notify_row(
  * don't change to a new disk block at the same time
  */
 unsigned long rrd_select_initial_row(
-    rrd_file_t *rrd_file  __attribute__((unused)),
-    int rra_idx  __attribute__((unused)),
+    rrd_file_t UNUSED(*rrd_file),
+    int UNUSED(rra_idx),
     rra_def_t *rra
     )
 {