From 86399e49398cc9e8028e280eee3e89992ab3fd11 Mon Sep 17 00:00:00 2001 From: KWSys Upstream Date: Fri, 15 Dec 2017 10:48:01 -0500 Subject: [PATCH] KWSys 2017-12-15 (8f755ee9) Code extracted from: https://gitlab.kitware.com/utils/kwsys.git at commit 8f755ee93451e580aa7b5ed6cee9e6c5da81e7d0 (master). Upstream Shortlog ----------------- Volo Zyko (1): 9f6cd407 SystemTools: Fix removing of soft links to directories on Windows. --- SystemTools.cxx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/SystemTools.cxx b/SystemTools.cxx index 649f30bd3c..f5473628e7 100644 --- a/SystemTools.cxx +++ b/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;