From 6653e000f0b061772812f9735e615979555b8d55 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 11 Feb 2025 20:37:40 -0800 Subject: [PATCH] fix convertToWindowsNativeNameSpace bug This fixes a test suite failure. The OsPath conversion made that be used in more places, including addurl, which exposed an existing bug. --- Utility/Path/Windows.hs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Utility/Path/Windows.hs b/Utility/Path/Windows.hs index 4e2da49f70..ab9c9518e0 100644 --- a/Utility/Path/Windows.hs +++ b/Utility/Path/Windows.hs @@ -14,6 +14,7 @@ module Utility.Path.Windows ( import Utility.Path import Utility.OsPath +import qualified Utility.OsString as OS import Utility.SystemDirectory import Utility.FileSystemEncoding @@ -38,9 +39,15 @@ convertToWindowsNativeNamespace f -- will not be resolved once it's converted. cwd <- getCurrentDirectory let p = simplifyPath (combine cwd (toOsPath f)) + -- If the input path is absolute but does not include a drive, + -- add the drive from the cwd, because a path in the native + -- namespace must include a drive. + let p' = if OS.null (takeDrive p) + then joinDrive (takeDrive cwd) p + else p -- Normalize slashes. - let p' = encodeBS $ WinPath.normalise $ fromOsPath p - return (win32_file_namespace <> p') + let p'' = encodeBS $ WinPath.normalise $ fromOsPath p' + return (win32_file_namespace <> p'') where win32_dev_namespace = "\\\\.\\" win32_file_namespace = "\\\\?\\"