fix file open flag mapping on Windows
authorNils Durner <durner@gnunet.org>
Tue, 25 Aug 2009 20:49:20 +0000 (20:49 +0000)
committerNils Durner <durner@gnunet.org>
Tue, 25 Aug 2009 20:49:20 +0000 (20:49 +0000)
src/util/disk.c

index 7bf8e9753229617d6c2b806bb6bbb5cb24300a80..e6d045106f8b29d36d82fb997a17d53c58654768 100644 (file)
@@ -1100,11 +1100,24 @@ GNUNET_DISK_file_open (const char *fn, int flags, ...)
     access = FILE_WRITE_DATA;
 
   if (flags & GNUNET_DISK_OPEN_FAILIFEXISTS)
-    disp = CREATE_NEW;
-  if (flags & GNUNET_DISK_OPEN_TRUNCATE)
-    disp = TRUNCATE_EXISTING;
-  if (flags & GNUNET_DISK_OPEN_CREATE)
-    disp |= OPEN_ALWAYS;
+    {
+      disp = CREATE_NEW;
+    }
+  else if (flags & GNUNET_DISK_OPEN_CREATE)
+    {
+      if (flags & GNUNET_DISK_OPEN_TRUNCATE)
+        disp = CREATE_ALWAYS;
+      else
+        disp = OPEN_ALWAYS;
+    }
+  else if (flags & GNUNET_DISK_OPEN_TRUNCATE)
+    {
+      disp = TRUNCATE_EXISTING;
+    }
+  else
+  {
+    disp = OPEN_ALWAYS;
+  }
 
   /* TODO: access priviledges? */
   h = CreateFile (expfn, access, FILE_SHARE_DELETE | FILE_SHARE_READ