safer-file-handles 0.1 → 0.2
raw patch · 2 files changed
+36/−45 lines, 2 filesdep ~regionsPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: regions
API changes (from Hackage documentation)
- System.IO.SaferFileHandles: instance Dup (RegionalFileHandle ioMode) File
+ System.IO.SaferFileHandles: instance Dup (RegionalFileHandle ioMode)
- System.IO.SaferFileHandles: openBinaryFile :: (MonadCatchIO pr) => FilePath -> IOMode ioMode -> RegionT File s pr (RegionalFileHandle ioMode (RegionT File s pr))
+ System.IO.SaferFileHandles: openBinaryFile :: (MonadCatchIO pr) => FilePath -> IOMode ioMode -> RegionT s pr (RegionalFileHandle ioMode (RegionT s pr))
- System.IO.SaferFileHandles: openBinaryTempFile :: (MonadCatchIO pr) => FilePath -> Template -> RegionT File s pr (FilePath, RegionalFileHandle RW (RegionT File s pr))
+ System.IO.SaferFileHandles: openBinaryTempFile :: (MonadCatchIO pr) => FilePath -> Template -> RegionT s pr (FilePath, RegionalFileHandle RW (RegionT s pr))
- System.IO.SaferFileHandles: openBinaryTempFileWithDefaultPermissions :: (MonadCatchIO pr) => FilePath -> Template -> RegionT File s pr (FilePath, RegionalFileHandle RW (RegionT File s pr))
+ System.IO.SaferFileHandles: openBinaryTempFileWithDefaultPermissions :: (MonadCatchIO pr) => FilePath -> Template -> RegionT s pr (FilePath, RegionalFileHandle RW (RegionT s pr))
- System.IO.SaferFileHandles: openFile :: (MonadCatchIO pr) => FilePath -> IOMode ioMode -> RegionT File s pr (RegionalFileHandle ioMode (RegionT File s pr))
+ System.IO.SaferFileHandles: openFile :: (MonadCatchIO pr) => FilePath -> IOMode ioMode -> RegionT s pr (RegionalFileHandle ioMode (RegionT s pr))
- System.IO.SaferFileHandles: openTempFile :: (MonadCatchIO pr) => FilePath -> Template -> RegionT File s pr (FilePath, RegionalFileHandle RW (RegionT File s pr))
+ System.IO.SaferFileHandles: openTempFile :: (MonadCatchIO pr) => FilePath -> Template -> RegionT s pr (FilePath, RegionalFileHandle RW (RegionT s pr))
- System.IO.SaferFileHandles: openTempFileWithDefaultPermissions :: (MonadCatchIO pr) => FilePath -> Template -> RegionT File s pr (FilePath, RegionalFileHandle RW (RegionT File s pr))
+ System.IO.SaferFileHandles: openTempFileWithDefaultPermissions :: (MonadCatchIO pr) => FilePath -> Template -> RegionT s pr (FilePath, RegionalFileHandle RW (RegionT s pr))
- System.IO.SaferFileHandles: stderr :: (MonadCatchIO pr) => RegionT File s pr (RegionalFileHandle W (RegionT File s pr))
+ System.IO.SaferFileHandles: stderr :: (MonadCatchIO pr) => RegionT s pr (RegionalFileHandle W (RegionT s pr))
- System.IO.SaferFileHandles: stdin :: (MonadCatchIO pr) => RegionT File s pr (RegionalFileHandle R (RegionT File s pr))
+ System.IO.SaferFileHandles: stdin :: (MonadCatchIO pr) => RegionT s pr (RegionalFileHandle R (RegionT s pr))
- System.IO.SaferFileHandles: stdout :: (MonadCatchIO pr) => RegionT File s pr (RegionalFileHandle W (RegionT File s pr))
+ System.IO.SaferFileHandles: stdout :: (MonadCatchIO pr) => RegionT s pr (RegionalFileHandle W (RegionT s pr))
- System.IO.SaferFileHandles: withBinaryFile :: (MonadCatchIO pr) => FilePath -> IOMode ioMode -> (forall s. RegionalFileHandle ioMode (RegionT File s pr) -> RegionT File s pr α) -> pr α
+ System.IO.SaferFileHandles: withBinaryFile :: (MonadCatchIO pr) => FilePath -> IOMode ioMode -> (forall s. RegionalFileHandle ioMode (RegionT s pr) -> RegionT s pr α) -> pr α
- System.IO.SaferFileHandles: withFile :: (MonadCatchIO pr) => FilePath -> IOMode ioMode -> (forall s. RegionalFileHandle ioMode (RegionT File s pr) -> RegionT File s pr α) -> pr α
+ System.IO.SaferFileHandles: withFile :: (MonadCatchIO pr) => FilePath -> IOMode ioMode -> (forall s. RegionalFileHandle ioMode (RegionT s pr) -> RegionT s pr α) -> pr α
Files
- System/IO/SaferFileHandles.hs +34/−43
- safer-file-handles.cabal +2/−2
System/IO/SaferFileHandles.hs view
@@ -279,14 +279,14 @@ -- from regions: import Control.Monad.Trans.Region -- (re-exported entirely)-import Control.Monad.Trans.Region.Internal ( Resource- , openResource- , closeResource- , internalHandle- , ParentOf- , Dup- )-import qualified Control.Monad.Trans.Region.Internal as R ( Handle )+import Control.Monad.Trans.Region.Unsafe ( Resource+ , openResource+ , closeResource+ , internalHandle+ , ParentOf+ , Dup+ )+import qualified Control.Monad.Trans.Region.Unsafe as R ( Handle ) -- from explicit-iomodes import System.IO.ExplicitIOModes ( IOMode(..)@@ -304,6 +304,11 @@ {-| A file scarce resource. +This module provides an instance for 'Resource' for 'File'. This allows you to+open files in a region which are automatically closed when the region terminates+but it disallows you to return handles to these closed files from the region so+preventing I/O with closed files.+ You can open a file with one of the following functions: * 'openFile'@@ -395,7 +400,7 @@ newtype RegionalFileHandle ioMode (r ∷ * → *) = RegionalFileHandle { unRegionalFileHandle ∷ RegionalHandle File r } -instance Dup (RegionalFileHandle ioMode) File where+instance Dup (RegionalFileHandle ioMode) where dup = liftM RegionalFileHandle ∘ dup ∘ unRegionalFileHandle {-| Open a file yielding a regional handle to it. This provides a safer@@ -412,8 +417,8 @@ openFile ∷ MonadCatchIO pr ⇒ FilePath → IOMode ioMode- → RegionT File s pr- (RegionalFileHandle ioMode (RegionT File s pr))+ → RegionT s pr+ (RegionalFileHandle ioMode (RegionT s pr)) openFile filePath ioMode = liftM RegionalFileHandle $ open $ File False filePath $ regularIOMode ioMode @@ -424,8 +429,8 @@ withFile ∷ MonadCatchIO pr ⇒ FilePath → IOMode ioMode- → (∀ s. RegionalFileHandle ioMode (RegionT File s pr)- → RegionT File s pr α+ → (∀ s. RegionalFileHandle ioMode (RegionT s pr)+ → RegionT s pr α ) → pr α withFile filePath ioMode f = with (File False filePath (regularIOMode ioMode))@@ -483,19 +488,19 @@ -- | Return a regional handle to standard input. This provides a safer -- replacement for @System.IO.@'SIO.stdin'. stdin ∷ MonadCatchIO pr- ⇒ RegionT File s pr (RegionalFileHandle R (RegionT File s pr))+ ⇒ RegionT s pr (RegionalFileHandle R (RegionT s pr)) stdin = liftM RegionalFileHandle $ open $ Std In -- | Return a regional handle to standard output. This provides a safer -- replacement for @System.IO.@'SIO.stdout'. stdout ∷ MonadCatchIO pr- ⇒ RegionT File s pr (RegionalFileHandle W (RegionT File s pr))+ ⇒ RegionT s pr (RegionalFileHandle W (RegionT s pr)) stdout = liftM RegionalFileHandle $ open $ Std Out -- | Return a regional handle to standard error. This provides a safer -- replacement for @System.IO.@'SIO.stderr'. stderr ∷ MonadCatchIO pr- ⇒ RegionT File s pr (RegionalFileHandle W (RegionT File s pr))+ ⇒ RegionT s pr (RegionalFileHandle W (RegionT s pr)) stderr = liftM RegionalFileHandle $ open $ Std Err {- $TODO_cast@@ -788,8 +793,8 @@ withBinaryFile ∷ MonadCatchIO pr ⇒ FilePath → IOMode ioMode- → (∀ s. RegionalFileHandle ioMode (RegionT File s pr)- → RegionT File s pr α+ → (∀ s. RegionalFileHandle ioMode (RegionT s pr)+ → RegionT s pr α ) → pr α withBinaryFile filePath ioMode f = with (File True filePath (regularIOMode ioMode))@@ -800,8 +805,8 @@ openBinaryFile ∷ MonadCatchIO pr ⇒ FilePath → IOMode ioMode- → RegionT File s pr- (RegionalFileHandle ioMode (RegionT File s pr))+ → RegionT s pr+ (RegionalFileHandle ioMode (RegionT s pr)) openBinaryFile filePath ioMode = liftM RegionalFileHandle $ open $ File True filePath (regularIOMode ioMode) @@ -842,10 +847,7 @@ → DefaultPermissions → FilePath → Template- → RegionT File s pr- ( FilePath- , RegionalFileHandle RW (RegionT File s pr)- )+ → RegionT s pr (FilePath, RegionalFileHandle RW (RegionT s pr)) genOpenTempFile binary defaultPerms filePath template = do rh@(internalHandle → FileHandle (Just fp) _) ← open $ TempFile binary filePath@@ -859,22 +861,17 @@ openTempFile ∷ MonadCatchIO pr ⇒ FilePath → Template- → RegionT File s pr- ( FilePath- , RegionalFileHandle RW (RegionT File s pr)- )+ → RegionT s pr (FilePath, RegionalFileHandle RW (RegionT s pr)) openTempFile = genOpenTempFile False False -- | Open a temporary file in binary mode yielding a regional handle to it -- paired with the generated file path. This provides a safer replacement for -- @System.IO.@'SIO.openBinaryTempFile'.-openBinaryTempFile ∷ MonadCatchIO pr- ⇒ FilePath- → Template- → RegionT File s pr- ( FilePath- , RegionalFileHandle RW (RegionT File s pr)- )+openBinaryTempFile ∷+ MonadCatchIO pr+ ⇒ FilePath+ → Template+ → RegionT s pr (FilePath, RegionalFileHandle RW (RegionT s pr)) openBinaryTempFile = genOpenTempFile True False #if MIN_VERSION_base(4,2,0)@@ -885,10 +882,7 @@ MonadCatchIO pr ⇒ FilePath → Template- → RegionT File s pr- ( FilePath- , RegionalFileHandle RW (RegionT File s pr)- )+ → RegionT s pr (FilePath, RegionalFileHandle RW (RegionT s pr)) openTempFileWithDefaultPermissions = genOpenTempFile False True -- | Open a temporary file in binary mode with default permissions yielding a@@ -899,10 +893,7 @@ MonadCatchIO pr ⇒ FilePath → Template- → RegionT File s pr- ( FilePath- , RegionalFileHandle RW (RegionT File s pr)- )+ → RegionT s pr (FilePath, RegionalFileHandle RW (RegionT s pr)) openBinaryTempFileWithDefaultPermissions = genOpenTempFile True True #endif
safer-file-handles.cabal view
@@ -1,5 +1,5 @@ name: safer-file-handles-version: 0.1+version: 0.2 cabal-version: >=1.6 build-type: Simple license: BSD3@@ -61,7 +61,7 @@ GHC-Options: -O2 -Wall build-depends: base >= 4 && < 4.3 , base-unicode-symbols >= 0.1.1 && < 0.2- , regions == 0.1.*+ , regions == 0.2.* , transformers >= 0.1.4 && < 0.2 , MonadCatchIO-transformers == 0.0.2.* , explicit-iomodes >= 0.1.5 && < 0.2