From 1e9d74f8db463d04bef33f76a3d6fd5cd0400bb0 Mon Sep 17 00:00:00 2001 From: membar Date: Tue, 19 Aug 2003 11:59:56 +0000 Subject: PR libgcj/11575 * java/io/natFileDescriptorWin32.cc (open): Set create flag to OPEN_AWAYS when READ & WRITE regardless of APPEND flag. Honor EXCL when openning with WRITE flag. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70565 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/java/io/natFileDescriptorWin32.cc | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'libjava/java/io') diff --git a/libjava/java/io/natFileDescriptorWin32.cc b/libjava/java/io/natFileDescriptorWin32.cc index 210eb73cbbb..50669875ea1 100644 --- a/libjava/java/io/natFileDescriptorWin32.cc +++ b/libjava/java/io/natFileDescriptorWin32.cc @@ -97,20 +97,25 @@ java::io::FileDescriptor::open (jstring path, jint jflags) { if ((jflags & READ) && (jflags & WRITE)) { access = GENERIC_READ | GENERIC_WRITE; - if (jflags & APPEND) - create = OPEN_ALWAYS; + if (jflags & EXCL) + create = CREATE_NEW; // this will raise error if file exists. else - create = CREATE_ALWAYS; + create = OPEN_ALWAYS; // equivalent to O_CREAT } - else if(jflags & READ) - access = GENERIC_READ; - else + else if (jflags & READ) { + access = GENERIC_READ; + create = OPEN_EXISTING; // ignore EXCL + } + else + { access = GENERIC_WRITE; - if (jflags & APPEND) + if (jflags & EXCL) + create = CREATE_NEW; + else if (jflags & APPEND) create = OPEN_ALWAYS; else - create = CREATE_ALWAYS; + create = CREATE_ALWAYS; } handle = CreateFile(buf, access, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, create, 0, NULL); -- cgit v1.2.3