From bd5d2b0782a77f9d1019f1a477e11bd9e0b79297 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 30 Jan 2025 14:23:00 -0400 Subject: [PATCH] fix FileIO openTempFile on Windows When an UNC-style path is passed into openTempFile, the returned file starts with that same style of path. Which can cause problems, eg piping that filename to git failed. So, convert the output filename to be relative to the input temp directory. --- Utility/FileIO.hs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Utility/FileIO.hs b/Utility/FileIO.hs index ac7fe7f340..e0cd546a28 100644 --- a/Utility/FileIO.hs +++ b/Utility/FileIO.hs @@ -37,7 +37,9 @@ import System.File.OsPath -- https://github.com/haskell/file-io/issues/39 import Utility.Path.Windows import Utility.OsPath +import System.OsPath import System.IO (IO, Handle, IOMode) +import Prelude (return) import qualified System.File.OsPath as O import qualified Data.ByteString as B import qualified Data.ByteString.Lazy as L @@ -96,7 +98,10 @@ appendFile' f b = do openTempFile :: OsPath -> OsPath -> IO (OsPath, Handle) openTempFile p s = do p' <- toOsPath <$> convertToWindowsNativeNamespace (fromOsPath p) - O.openTempFile p' s + (t, h) <- O.openTempFile p' s + -- Avoid returning mangled path from convertToWindowsNativeNamespace + let t' = p takeFileName t + return (t', h) #endif #else