From cd22340c99d12a64a01d53c5307c25d2efbabbd6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 12 Nov 2015 18:03:49 -0400 Subject: [PATCH] generalize to MonadIO --- Utility/FileMode.hs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Utility/FileMode.hs b/Utility/FileMode.hs index b4a6b536d5..1e9b634836 100644 --- a/Utility/FileMode.hs +++ b/Utility/FileMode.hs @@ -20,6 +20,8 @@ import Utility.PosixFiles import System.Posix.Files #endif import Foreign (complement) +import Control.Monad.IO.Class (liftIO, MonadIO) +import Control.Monad.Catch import Utility.Exception @@ -95,7 +97,7 @@ isExecutable mode = combineModes executeModes `intersectFileModes` mode /= 0 {- Runs an action without that pesky umask influencing it, unless the - passed FileMode is the standard one. -} -noUmask :: FileMode -> IO a -> IO a +noUmask :: (MonadIO m, MonadMask m) => FileMode -> m a -> m a #ifndef mingw32_HOST_OS noUmask mode a | mode == stdFileMode = a @@ -104,12 +106,12 @@ noUmask mode a noUmask _ a = a #endif -withUmask :: FileMode -> IO a -> IO a +withUmask :: (MonadIO m, MonadMask m) => FileMode -> m a -> m a #ifndef mingw32_HOST_OS withUmask umask a = bracket setup cleanup go where - setup = setFileCreationMask umask - cleanup = setFileCreationMask + setup = liftIO $ setFileCreationMask umask + cleanup = liftIO . setFileCreationMask go _ = a #else withUmask _ a = a