mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-05 21:31:08 -06:00
Windows: Revert "Prefer junctions for directory symlinks"
Revert commit 5101d586c4 (Windows: Prefer junctions for directory
symlinks, 2022-02-22, v3.24.0-rc1~575^2). Junctions do not support
`../` and other non-canonical paths. Revert their use pending further
investigation.
Fixes: #23781
Issue: #23257
This commit is contained in:
@@ -3358,22 +3358,12 @@ cmsys::Status cmSystemTools::CreateSymlink(std::string const& origName,
|
|||||||
uv_fs_t req;
|
uv_fs_t req;
|
||||||
int flags = 0;
|
int flags = 0;
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
bool const isDir = cmsys::SystemTools::FileIsDirectory(origName);
|
if (cmsys::SystemTools::FileIsDirectory(origName)) {
|
||||||
if (isDir) {
|
flags |= UV_FS_SYMLINK_DIR;
|
||||||
flags |= UV_FS_SYMLINK_JUNCTION;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
int err = uv_fs_symlink(nullptr, &req, origName.c_str(), newName.c_str(),
|
int err = uv_fs_symlink(nullptr, &req, origName.c_str(), newName.c_str(),
|
||||||
flags, nullptr);
|
flags, nullptr);
|
||||||
#if defined(_WIN32)
|
|
||||||
if (err && uv_fs_get_system_error(&req) == ERROR_NOT_SUPPORTED && isDir) {
|
|
||||||
// Try fallback to symlink for network (requires additional permissions).
|
|
||||||
flags ^= UV_FS_SYMLINK_JUNCTION | UV_FS_SYMLINK_DIR;
|
|
||||||
err = uv_fs_symlink(nullptr, &req, origName.c_str(), newName.c_str(),
|
|
||||||
flags, nullptr);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
cmsys::Status status;
|
cmsys::Status status;
|
||||||
if (err) {
|
if (err) {
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
|
|||||||
Reference in New Issue
Block a user