Commit 43d7a42b by Edward Thomson

win32: don't canonicalize symlink targets

Don't canonicalize symlink targets; our win32 path canonicalization
routines expect an absolute path.  In particular, using the path
canonicalization routines for symlink targets (introduced in commit
7d55bee6, "win32: fix relative symlinks pointing into dirs",
2020-01-10).

Now, use the utf8 -> utf16 relative path handling functions, so that
paths like "../foo" will be translated to "..\foo".
parent f2b114ba
...@@ -447,8 +447,7 @@ int p_symlink(const char *target, const char *path) ...@@ -447,8 +447,7 @@ int p_symlink(const char *target, const char *path)
* relative symlinks, this is not someting we want. * relative symlinks, this is not someting we want.
*/ */
if (git_win32_path_from_utf8(path_w, path) < 0 || if (git_win32_path_from_utf8(path_w, path) < 0 ||
git__utf8_to_16(target_w, MAX_PATH, target) < 0 || git_win32_path_relative_from_utf8(target_w, target) < 0)
git_win32_path_canonicalize(target_w) < 0)
return -1; return -1;
dwFlags = SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE; dwFlags = SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment