diff options
Diffstat (limited to 'lib/win32/emu.cpp')
-rw-r--r-- | lib/win32/emu.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/win32/emu.cpp b/lib/win32/emu.cpp index f13fb899..3285f90c 100644 --- a/lib/win32/emu.cpp +++ b/lib/win32/emu.cpp @@ -518,19 +518,19 @@ HANDLE openfile(const char *pFileName, int flags, int mode) if (flags & O_WRONLY) { + accessRights = FILE_WRITE_DATA; shareMode = FILE_SHARE_WRITE; } - if (flags & O_RDWR) + else if (flags & (O_RDWR | O_CREAT)) { - shareMode = FILE_SHARE_READ | FILE_SHARE_WRITE; + accessRights |= FILE_WRITE_ATTRIBUTES + | FILE_WRITE_DATA | FILE_WRITE_EA; + shareMode |= FILE_SHARE_WRITE; } + if (flags & O_CREAT) { createDisposition = OPEN_ALWAYS; - shareMode |= FILE_SHARE_WRITE; - accessRights |= FILE_WRITE_ATTRIBUTES - | FILE_WRITE_DATA | FILE_WRITE_EA - | FILE_ALL_ACCESS; } if (flags & O_TRUNC) { |