summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Cohen Gindi <danielgindi@gmail.com>2019-05-05 07:49:09 +0300
committerDaniel Cohen Gindi <danielgindi@gmail.com>2019-05-05 07:49:09 +0300
commit37a7adb59c5075901bd64259e8a98ccef6f6f452 (patch)
treedacfab7d3701e70e59f0385af10d0ee7dfefc816
parent604e281135df0df3c7ed9d200eb77fec48bc30f0 (diff)
downloadlibgit2-37a7adb59c5075901bd64259e8a98ccef6f6f452.tar.gz
Support symlinks for directories in win32
-rw-r--r--src/win32/posix_w32.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/win32/posix_w32.c b/src/win32/posix_w32.c
index fcaf77e89..1f681111b 100644
--- a/src/win32/posix_w32.c
+++ b/src/win32/posix_w32.c
@@ -402,8 +402,12 @@ int p_symlink(const char *target, const char *path)
git__utf8_to_16(target_w, MAX_PATH, target) < 0)
return -1;
- if (!CreateSymbolicLinkW(path_w, target_w,
- SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE))
+ DWORD dwFlags = SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE;
+
+ if (GetFileAttributesW(target_w) & FILE_ATTRIBUTE_DIRECTORY)
+ dwFlags |= SYMBOLIC_LINK_FLAG_DIRECTORY;
+
+ if (!CreateSymbolicLinkW(path_w, target_w, dwFlags))
return -1;
return 0;