shithub: MicroHs

Download patch

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