diff options
author | Brad King <brad.king@kitware.com> | 2017-12-20 12:59:33 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2017-12-20 12:59:42 (GMT) |
commit | 740e598c8ef708656175709a2b51476604005863 (patch) | |
tree | 945efacb47163d652f9da79d4e74ac4404c39e69 | |
parent | c9cbc326487592d47590bbf7498eab0901e3eb16 (diff) | |
parent | 4966c8d8dabfb8e1077d69137f32031fa38a9ae5 (diff) | |
download | CMake-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.cxx | 8 |
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; |