packages feed

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 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