From cd890acc6fbb2b228f0903f0cea313fde02c026f Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Tue, 13 Jun 2017 15:26:47 +0300 Subject: refactoring --- src/WindowsEnv/Environment.hs | 4 ++-- src/WindowsEnv/Registry.hs | 12 ++++-------- 2 files changed, 6 insertions(+), 10 deletions(-) (limited to 'src/WindowsEnv') diff --git a/src/WindowsEnv/Environment.hs b/src/WindowsEnv/Environment.hs index aa05017..6784d43 100644 --- a/src/WindowsEnv/Environment.hs +++ b/src/WindowsEnv/Environment.hs @@ -34,7 +34,7 @@ import Data.List (intercalate) import Data.List.Split (splitOn) import Foreign.Marshal.Alloc (allocaBytes) import Foreign.Storable (sizeOf) -import System.IO.Error (catchIOError, isDoesNotExistError) +import System.IO.Error (isDoesNotExistError, tryIOError) import qualified System.Win32.Types as WinAPI import qualified WindowsEnv.Registry as Registry @@ -108,7 +108,7 @@ foreign import WINDOWS_ENV_CCALL unsafe "Windows.h ExpandEnvironmentStringsW" c_ExpandEnvironmentStrings :: WinAPI.LPCTSTR -> WinAPI.LPTSTR -> WinAPI.DWORD -> IO WinAPI.ErrCode expand :: String -> ExceptT IOError IO String -expand value = ExceptT $ catchIOError (Right <$> doExpand) (return . Left) +expand value = ExceptT $ tryIOError doExpand where doExpandIn valuePtr bufferPtr bufferLength = do newBufferLength <- WinAPI.failIfZero "ExpandEnvironmentStringsW" $ diff --git a/src/WindowsEnv/Registry.hs b/src/WindowsEnv/Registry.hs index 73606d9..3121d9d 100644 --- a/src/WindowsEnv/Registry.hs +++ b/src/WindowsEnv/Registry.hs @@ -50,7 +50,7 @@ import Foreign.ForeignPtr (withForeignPtr) import Foreign.Marshal.Alloc (alloca, allocaBytes) import Foreign.Marshal.Array (peekArray, pokeArray) import Foreign.Storable (peek, poke) -import System.IO.Error (catchIOError) +import System.IO.Error (tryIOError) import qualified System.Win32.Types as WinAPI import qualified System.Win32.Registry as WinAPI @@ -63,16 +63,12 @@ closeKey :: Handle -> IO () closeKey = WinAPI.regCloseKey openKey :: IsKeyPath a => a -> IO (Either IOError Handle) -openKey keyPath = catchIOError doOpenKey wrapError - where - doOpenKey = Right <$> openKeyUnsafe keyPath - wrapError = return . Left +openKey keyPath = tryIOError $ openKeyUnsafe keyPath withHandle :: IsKeyPath a => a -> (Handle -> IO b) -> ExceptT IOError IO b -withHandle keyPath f = ExceptT $ catchIOError doWithHandle wrapError +withHandle keyPath f = ExceptT $ tryIOError doWithHandle where - doWithHandle = Right <$> bracket (openKeyUnsafe keyPath) closeKey f - wrapError = return . Left + doWithHandle = bracket (openKeyUnsafe keyPath) closeKey f data RootKey = CurrentUser | LocalMachine -- cgit v1.2.3