summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Benediktsson <mrjbq7@gmail.com>2024-04-15 13:28:33 -0700
committerJohn Benediktsson <mrjbq7@gmail.com>2024-04-15 13:28:33 -0700
commit6c742ea2eb7856d2b19adefd0aea4d3b9dda0b59 (patch)
treee36a8284d5f1b7a7fdc55036fc197d9a1cb52b75
parentdb8e6fc6371b83f41b156c0ee6f4255d0d5d6a31 (diff)
io.directories.windows: use MOVEFILE_REPLACE_EXISTING
-rw-r--r--basis/io/directories/windows/windows.factor7
-rw-r--r--basis/windows/kernel32/kernel32.factor7
2 files changed, 12 insertions, 2 deletions
diff --git a/basis/io/directories/windows/windows.factor b/basis/io/directories/windows/windows.factor
index e51bda8433..0297efb4c9 100644
--- a/basis/io/directories/windows/windows.factor
+++ b/basis/io/directories/windows/windows.factor
@@ -21,10 +21,13 @@ M: windows truncate-file
] with-disposal ;
M: windows move-file
- [ normalize-path ] bi@ MoveFile win32-error=0/f ;
+ [ normalize-path ] bi@
+ flags{ MOVEFILE_REPLACE_EXISTING MOVEFILE_COPY_ALLOWED }
+ MoveFileEx win32-error=0/f ;
M: windows move-file-atomically
- [ normalize-path ] bi@ 0 MoveFileEx win32-error=0/f ;
+ [ normalize-path ] bi@ MOVEFILE_REPLACE_EXISTING
+ MoveFileEx win32-error=0/f ;
ERROR: file-delete-failed path error ;
diff --git a/basis/windows/kernel32/kernel32.factor b/basis/windows/kernel32/kernel32.factor
index f5bd59a00b..f49ff7c044 100644
--- a/basis/windows/kernel32/kernel32.factor
+++ b/basis/windows/kernel32/kernel32.factor
@@ -124,6 +124,13 @@ CONSTANT: FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000
CONSTANT: FILE_SUPPORTS_USN_JOURNAL 0x02000000
CONSTANT: FILE_DAX_VOLUME 0x20000000
+CONSTANT: MOVEFILE_COPY_ALLOWED 0x2
+CONSTANT: MOVEFILE_CREATE_HARDLINK 0x10
+CONSTANT: MOVEFILE_DELAY_UNTIL_REBOOT 0x4
+CONSTANT: MOVEFILE_FAIL_IF_NOT_TRACKABLE 0x20
+CONSTANT: MOVEFILE_REPLACE_EXISTING 0x1
+CONSTANT: MOVEFILE_WRITE_THROUGH 0x8
+
CONSTANT: DONT_RESOLVE_DLL_REFERENCES 1
STRUCT: FILE_NOTIFY_INFORMATION