summaryrefslogtreecommitdiffstats
path: root/Utilities/cmlibuv/src/win/fs.c
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2018-05-07 15:48:01 (GMT)
committerBrad King <brad.king@kitware.com>2018-05-07 15:48:01 (GMT)
commit42fbb285161a7424116a1e838b29741864ab3691 (patch)
tree858d1d7aa84098ce326d32c41da9047d9cd95064 /Utilities/cmlibuv/src/win/fs.c
parentdd3e1a737216b7c9bfb6c7569685b36a1bff9cba (diff)
parentc8b67ea119c4000018238f6c3201a1364356d93a (diff)
downloadCMake-42fbb285161a7424116a1e838b29741864ab3691.zip
CMake-42fbb285161a7424116a1e838b29741864ab3691.tar.gz
CMake-42fbb285161a7424116a1e838b29741864ab3691.tar.bz2
Merge branch 'upstream-libuv' into update-libuv
* upstream-libuv: libuv 2018-05-06 (bf605bd7)
Diffstat (limited to 'Utilities/cmlibuv/src/win/fs.c')
-rw-r--r--Utilities/cmlibuv/src/win/fs.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/Utilities/cmlibuv/src/win/fs.c b/Utilities/cmlibuv/src/win/fs.c
index 097b00e..30b87ac 100644
--- a/Utilities/cmlibuv/src/win/fs.c
+++ b/Utilities/cmlibuv/src/win/fs.c
@@ -783,7 +783,9 @@ void fs__unlink(uv_fs_t* req) {
/* Remove read-only attribute */
FILE_BASIC_INFORMATION basic = { 0 };
- basic.FileAttributes = info.dwFileAttributes & ~(FILE_ATTRIBUTE_READONLY);
+ basic.FileAttributes = info.dwFileAttributes
+ & ~(FILE_ATTRIBUTE_READONLY)
+ | FILE_ATTRIBUTE_ARCHIVE;
status = pNtSetInformationFile(handle,
&iosb,
@@ -1390,6 +1392,12 @@ static void fs__copyfile(uv_fs_t* req) {
int overwrite;
flags = req->fs.info.file_flags;
+
+ if (flags & UV_FS_COPYFILE_FICLONE_FORCE) {
+ SET_REQ_UV_ERROR(req, UV_ENOSYS, ERROR_NOT_SUPPORTED);
+ return;
+ }
+
overwrite = flags & UV_FS_COPYFILE_EXCL;
if (CopyFileW(req->file.pathw, req->fs.info.new_pathw, overwrite) == 0) {
@@ -2334,8 +2342,11 @@ int uv_fs_copyfile(uv_loop_t* loop,
INIT(UV_FS_COPYFILE);
- if (flags & ~UV_FS_COPYFILE_EXCL)
+ if (flags & ~(UV_FS_COPYFILE_EXCL |
+ UV_FS_COPYFILE_FICLONE |
+ UV_FS_COPYFILE_FICLONE_FORCE)) {
return UV_EINVAL;
+ }
err = fs__capture_path(req, path, new_path, cb != NULL);