Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added support for POSIX semantics for file removal on Windows.
Windows 10 1709 and later support POSIX semantics for removing files, which means the file name is removed from the filesystem namespace as soon as the file is marked for deletion. This makes opening the file afterwards impossible, and allows creating a new file with the same name, even if the deleted file is still open and in use. The implementation uses runtime detection of the feature in the OS. We are also using two more implementations for file removal: one that employs the more recent FILE_DISPOSITION_FLAG_IGNORE_READONLY_ATTRIBUTE flag (available since Windows 10 1809), and FILE_DISPOSITION_INFO structure (supported since Windows Vista). The former allows to optimize removal of read-only files, and the latter allows to make file deletion atomic (i.e. not prone to failure if the file is replaced on the filesystem while the operation is executing). The implementation is chosen in runtime, depending on which one succeeds removing a file. Also, added support for deleting read-only directories, in addition to non-directory files, and simplified code a little. Closes #216.
- Loading branch information