ref: eaa2e8d592b484b40269cf6b104d68cf7b230670
parent: aa2140489b560e533a27ef50e4bc188e637321ce
author: Lennart Augustsson <lennart@augustsson.net>
date: Thu Sep 26 05:56:48 EDT 2024
Add openBinaryTempFile
--- a/lib/System/IO.hs
+++ b/lib/System/IO.hs
@@ -21,7 +21,7 @@
mkTextEncoding, hSetEncoding, utf8,
- openTmpFile, openTempFile,
+ openTmpFile, openTempFile, openBinaryTempFile,
withFile,
) where
@@ -301,8 +301,8 @@
return (tmp, h)
-- Sloppy implementation of openTempFile
-openTempFile :: FilePath -> String -> IO (String, Handle)
-openTempFile tmp tmplt = do
+openTempFile' :: (FilePath -> IOMode -> IO Handle) -> FilePath -> String -> IO (String, Handle)
+openTempFile' open tmp tmplt = do
let (pre, suf) = splitTmp tmplt
loop n = do
let fn = tmp ++ "/" ++ pre ++ show n ++ suf
@@ -312,6 +312,12 @@
hClose h
loop (n+1 :: Int)
Nothing -> do
- h <- openFile fn ReadWriteMode
+ h <- open fn ReadWriteMode
return (fn, h)
loop 0
+
+openTempFile :: FilePath -> String -> IO (String, Handle)
+openTempFile = openTempFile' openFile
+
+openBinaryTempFile :: FilePath -> String -> IO (String, Handle)
+openBinaryTempFile = openTempFile' openBinaryFile