allow deletion of open files in Windows

This commit is contained in:
Matthew Flatt 2010-07-06 07:02:14 -06:00
parent 96a6f56572
commit 763a010fd3

View File

@ -3901,7 +3901,7 @@ scheme_do_open_input_file(char *name, int offset, int argc, Scheme_Object *argv[
# ifdef WINDOWS_FILE_HANDLES # ifdef WINDOWS_FILE_HANDLES
fd = CreateFileW(WIDE_PATH(filename), fd = CreateFileW(WIDE_PATH(filename),
GENERIC_READ, GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL, NULL,
OPEN_EXISTING, OPEN_EXISTING,
0, 0,
@ -4144,7 +4144,7 @@ scheme_do_open_output_file(char *name, int offset, int argc, Scheme_Object *argv
fd = CreateFileW(WIDE_PATH(filename), fd = CreateFileW(WIDE_PATH(filename),
GENERIC_WRITE | (and_read ? GENERIC_READ : 0), GENERIC_WRITE | (and_read ? GENERIC_READ : 0),
FILE_SHARE_READ | FILE_SHARE_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL, NULL,
hmode, hmode,
FILE_FLAG_BACKUP_SEMANTICS, /* lets us detect directories in NT */ FILE_FLAG_BACKUP_SEMANTICS, /* lets us detect directories in NT */
@ -4158,7 +4158,7 @@ scheme_do_open_output_file(char *name, int offset, int argc, Scheme_Object *argv
if (DeleteFileW(WIDE_PATH(filename))) { if (DeleteFileW(WIDE_PATH(filename))) {
fd = CreateFileW(WIDE_PATH(filename), fd = CreateFileW(WIDE_PATH(filename),
GENERIC_WRITE, GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL, NULL,
hmode, hmode,
0, 0,