silently 1.1.3 → 1.1.4
raw patch · 4 files changed
+46/−50 lines, 4 files
Files
- silently.cabal +1/−1
- src/other/System/IO/Silently.hs +14/−16
- src/unix/System/IO/Silently.hs +15/−16
- src/windows/System/IO/Silently.hs +16/−17
silently.cabal view
@@ -1,5 +1,5 @@ name: silently-version: 1.1.3+version: 1.1.4 cabal-version: >= 1.2 build-type: Simple license: BSD3
src/other/System/IO/Silently.hs view
@@ -32,11 +32,7 @@ prepareAndRun (_,tmpHandle) = go handles where go [] = action- go (h:hs) = bracket (do old <- hDuplicate h- hDuplicateTo tmpHandle h- return old)- (\old -> hDuplicateTo old h)- (\_ -> go hs)+ go hs = goBracket go tmpHandle hs getTempOrCurrentDirectory :: IO String@@ -61,18 +57,20 @@ removeFile tmpFile prepareAndRun (tmpFile,tmpHandle) = go handles where- go [] = do- a <- action- hClose tmpHandle- str <- readFile tmpFile- forceList str- return (str,a)- go (h:hs) = bracket (do old <- hDuplicate h- hDuplicateTo tmpHandle h- return old)- (\old -> hDuplicateTo old h)- (\_ -> go hs)+ go [] = do+ a <- action+ hClose tmpHandle+ str <- readFile tmpFile+ forceList str+ return (str,a)+ go hs = goBracket go tmpHandle hs forceList [] = return () forceList (x:xs) = forceList xs +goBracket :: ([Handle] -> IO a) -> Handle -> [Handle] -> IO a+goBracket go tmpHandle (h:hs) = bracket (do old <- hDuplicate h+ hDuplicateTo tmpHandle h+ return old)+ (\old -> hDuplicateTo old h >> hClose old)+ (\_ -> go hs)
src/unix/System/IO/Silently.hs view
@@ -24,12 +24,8 @@ where prepareAndRun tmpHandle = go handles where- go [] = action- go (h:hs) = bracket (do old <- hDuplicate h- hDuplicateTo tmpHandle h- return old)- (\old -> hDuplicateTo old h)- (\_ -> go hs)+ go [] = action+ go hs = goBracket go tmpHandle hs getTempOrCurrentDirectory :: IO String@@ -54,13 +50,16 @@ removeFile tmpFile prepareAndRun (tmpFile,tmpHandle) = go handles where- go [] = do- a <- action- hClose tmpHandle- str <- readFile tmpFile- return (str,a)- go (h:hs) = bracket (do old <- hDuplicate h- hDuplicateTo tmpHandle h- return old)- (\old -> hDuplicateTo old h)- (\_ -> go hs)+ go [] = do+ a <- action+ hClose tmpHandle+ str <- readFile tmpFile+ return (str,a)+ go hs = goBracket go tmpHandle hs++goBracket :: ([Handle] -> IO a) -> Handle -> [Handle] -> IO a+goBracket go tmpHandle (h:hs) = bracket (do old <- hDuplicate h+ hDuplicateTo tmpHandle h+ return old)+ (\old -> hDuplicateTo old h >> hClose old)+ (\_ -> go hs)
src/windows/System/IO/Silently.hs view
@@ -24,12 +24,8 @@ where prepareAndRun tmpHandle = go handles where- go [] = action- go (h:hs) = bracket (do old <- hDuplicate h- hDuplicateTo tmpHandle h- return old)- (\old -> hDuplicateTo old h)- (\_ -> go hs)+ go [] = action+ go hs = goBracket go tmpHandle hs getTempOrCurrentDirectory :: IO String@@ -54,17 +50,20 @@ removeFile tmpFile prepareAndRun (tmpFile,tmpHandle) = go handles where- go [] = do- a <- action- hClose tmpHandle- str <- readFile tmpFile- forceList str- return (str,a)- go (h:hs) = bracket (do old <- hDuplicate h- hDuplicateTo tmpHandle h- return old)- (\old -> hDuplicateTo old h)- (\_ -> go hs)+ go [] = do+ a <- action+ hClose tmpHandle+ str <- readFile tmpFile+ forceList str+ return (str,a)+ go hs = goBracket go tmpHandle hs forceList [] = return () forceList (x:xs) = forceList xs++goBracket :: ([Handle] -> IO a) -> Handle -> [Handle] -> IO a+goBracket go tmpHandle (h:hs) = bracket (do old <- hDuplicate h+ hDuplicateTo tmpHandle h+ return old)+ (\old -> hDuplicateTo old h >> hClose old)+ (\_ -> go hs)