diff options
author | Daniel Cohen Gindi <danielgindi@gmail.com> | 2019-05-05 07:49:09 +0300 |
---|---|---|
committer | Daniel Cohen Gindi <danielgindi@gmail.com> | 2019-05-05 07:49:09 +0300 |
commit | 37a7adb59c5075901bd64259e8a98ccef6f6f452 (patch) | |
tree | dacfab7d3701e70e59f0385af10d0ee7dfefc816 | |
parent | 604e281135df0df3c7ed9d200eb77fec48bc30f0 (diff) | |
download | libgit2-37a7adb59c5075901bd64259e8a98ccef6f6f452.tar.gz |
Support symlinks for directories in win32
-rw-r--r-- | src/win32/posix_w32.c | 8 |
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; |