summaryrefslogtreecommitdiff
path: root/lib/win32/emu.cpp
diff options
context:
space:
mode:
authorChris Wilson <chris+github@qwirx.com>2006-10-13 23:03:23 +0000
committerChris Wilson <chris+github@qwirx.com>2006-10-13 23:03:23 +0000
commit9635631135e1f0df36a0b038f047384dd9d8c8c0 (patch)
tree23c91d2ea5ba5b6e00c853bdff67cd222f7c6768 /lib/win32/emu.cpp
parentf1ae01e66e6d2ed9072d17943fb04ccea0dbe592 (diff)
* Added support for Win32 temporary files
* Added InvisibleTempFileStream class and unit tests for it * Use InvisibleTempFileStream instead of FileStream for temporary files (refs #3)
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;