Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Address suggestions
  • Loading branch information
jozkee committed Sep 10, 2021
commit 4e73c72d2b64adca76fdfff64905fdac6dfe9ee0
Original file line number Diff line number Diff line change
Expand Up @@ -509,15 +509,14 @@ internal static void CreateSymbolicLink(string path, string pathToTarget, bool i
if (targetPath.StartsWith(PathInternal.UncNTPathPrefix.AsSpan()))
{
// We need to prepend the Win32 equivalent of UNC NT prefix.
return Path.Join(PathInternal.UncPathPrefix.AsSpan(), targetPath.Slice(PathInternal.UncNTPathPrefix.Length)).ToString();
return Path.Join(PathInternal.UncPathPrefix.AsSpan(), targetPath.Slice(PathInternal.UncNTPathPrefix.Length));
}

Debug.Assert(targetPath.StartsWith(PathInternal.NTPathPrefix.AsSpan()));
return targetPath.Slice(PathInternal.NTPathPrefix.Length).ToString();
return GetTargetPathWithoutNTPrefix(targetPath);
}
else if (returnFullPath)
{
return Path.Join(Path.GetDirectoryName(linkPath.AsSpan()), targetPath).ToString();
return Path.Join(Path.GetDirectoryName(linkPath.AsSpan()), targetPath);
}
else
{
Expand All @@ -536,8 +535,9 @@ internal static void CreateSymbolicLink(string path, string pathToTarget, bool i

// Unlike symbolic links, mount point paths cannot be relative.
Debug.Assert(!PathInternal.IsPartiallyQualified(targetPath));
Debug.Assert(targetPath.StartsWith(PathInternal.NTPathPrefix.AsSpan()));
return targetPath.Slice(PathInternal.NTPathPrefix.Length).ToString();
// Mount points cannot point to a remote location.
Debug.Assert(!targetPath.StartsWith(PathInternal.UncNTPathPrefix.AsSpan()));
return GetTargetPathWithoutNTPrefix(targetPath);
}

return null;
Expand All @@ -546,6 +546,12 @@ internal static void CreateSymbolicLink(string path, string pathToTarget, bool i
{
ArrayPool<byte>.Shared.Return(buffer);
}

static string GetTargetPathWithoutNTPrefix(ReadOnlySpan<char> targetPath)
{
Debug.Assert(targetPath.StartsWith(PathInternal.NTPathPrefix.AsSpan()));
return targetPath.Slice(PathInternal.NTPathPrefix.Length).ToString();
}
}

private static unsafe string? GetFinalLinkTarget(string linkPath, bool isDirectory)
Expand Down