From f01d2b04412a164258dbb77140eed02027ba24f7 Mon Sep 17 00:00:00 2001 From: Nils Durner Date: Tue, 25 Aug 2009 20:49:20 +0000 Subject: [PATCH] fix file open flag mapping on Windows --- src/util/disk.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/util/disk.c b/src/util/disk.c index 7bf8e9753..e6d045106 100644 --- a/src/util/disk.c +++ b/src/util/disk.c @@ -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 -- 2.25.1