ref: 66c7fd6779c2e4c0032532edb3679a383d41b01e
parent: 5d846d4c9574bdd2ac5204d46cf42005894393e5
author: Lennart Augustsson <lennart.augustsson@epicgames.com>
date: Tue Jul 23 11:26:26 EDT 2024
Add withCurrentDirectory
--- a/lib/System/Directory.hs
+++ b/lib/System/Directory.hs
@@ -6,6 +6,7 @@
listDirectory,
setCurrentDirectory,
getCurrentDirectory,
+ withCurrentDirectory,
createDirectory,
createDirectoryIfMissing,
copyFile,
@@ -12,6 +13,7 @@
getHomeDirectory,
) where
import Prelude
+import Control.Exception(bracket)
import Control.Monad(when)
import Foreign.C.String
import Foreign.Marshal.Alloc
@@ -87,6 +89,12 @@
when (cwd == nullPtr) $
error "getCurrentDirectory"
peekCAString cwd
+
+withCurrentDirectory :: FilePath -> IO a -> IO a
+withCurrentDirectory dir io =
+ bracket getCurrentDirectory setCurrentDirectory $ \ _ -> do
+ setCurrentDirectory dir
+ io
createDirectory :: FilePath -> IO ()
createDirectory d = do
--
⑨