summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2017-12-20 12:59:33 (GMT)
committerKitware Robot <kwrobot@kitware.com>2017-12-20 12:59:42 (GMT)
commit740e598c8ef708656175709a2b51476604005863 (patch)
tree945efacb47163d652f9da79d4e74ac4404c39e69
parentc9cbc326487592d47590bbf7498eab0901e3eb16 (diff)
parent4966c8d8dabfb8e1077d69137f32031fa38a9ae5 (diff)
downloadCMake-740e598c8ef708656175709a2b51476604005863.zip
CMake-740e598c8ef708656175709a2b51476604005863.tar.gz
CMake-740e598c8ef708656175709a2b51476604005863.tar.bz2
Merge topic 'update-kwsys'
4966c8d8 Merge branch 'upstream-KWSys' into update-kwsys 86399e49 KWSys 2017-12-15 (8f755ee9) Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1597
-rw-r--r--Source/kwsys/SystemTools.cxx8
1 files changed, 8 insertions, 0 deletions
diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx
index 649f30b..f547362 100644
--- a/Source/kwsys/SystemTools.cxx
+++ b/Source/kwsys/SystemTools.cxx
@@ -2509,6 +2509,14 @@ bool SystemTools::RemoveFile(const std::string& source)
if (IsJunction(ws) && DeleteJunction(ws)) {
return true;
}
+ const DWORD DIRECTORY_SOFT_LINK_ATTRS =
+ FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_REPARSE_POINT;
+ DWORD attrs = GetFileAttributesW(ws.c_str());
+ if (attrs != INVALID_FILE_ATTRIBUTES &&
+ (attrs & DIRECTORY_SOFT_LINK_ATTRS) == DIRECTORY_SOFT_LINK_ATTRS &&
+ RemoveDirectoryW(ws.c_str())) {
+ return true;
+ }
if (DeleteFileW(ws.c_str()) || GetLastError() == ERROR_FILE_NOT_FOUND ||
GetLastError() == ERROR_PATH_NOT_FOUND) {
return true;