summaryrefslogtreecommitdiff
path: root/lib/win32/emu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/win32/emu.cpp')
-rw-r--r--lib/win32/emu.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/win32/emu.cpp b/lib/win32/emu.cpp
index 91684f1c..6ce1790c 100644
--- a/lib/win32/emu.cpp
+++ b/lib/win32/emu.cpp
@@ -521,7 +521,7 @@ HANDLE openfile(const char *pFileName, int flags, int mode)
accessRights = FILE_WRITE_DATA;
shareMode = FILE_SHARE_WRITE;
}
- else if (flags & (O_RDWR | O_CREAT))
+ else if (flags & O_RDWR)
{
accessRights |= FILE_WRITE_ATTRIBUTES
| FILE_WRITE_DATA | FILE_WRITE_EA;
@@ -541,12 +541,19 @@ HANDLE openfile(const char *pFileName, int flags, int mode)
shareMode = 0;
}
+ DWORD winFlags = FILE_FLAG_BACKUP_SEMANTICS;
+ if (flags & O_TEMPORARY)
+ {
+ winFlags |= FILE_FLAG_DELETE_ON_CLOSE;
+ shareMode |= FILE_SHARE_DELETE;
+ }
+
HANDLE hdir = CreateFileW(pBuffer,
accessRights,
shareMode,
NULL,
createDisposition,
- FILE_FLAG_BACKUP_SEMANTICS,
+ winFlags,
NULL);
delete [] pBuffer;