safer-file-handles-bytestring 0.1.0.3 → 0.2
raw patch · 5 files changed
+106/−66 lines, 5 filesdep ~regionsdep ~safer-file-handlesPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: regions, safer-file-handles
API changes (from Hackage documentation)
- Data.ByteString.Char8.SaferFileHandles: hGet :: (AncestorRegion pr cr, MonadIO cr, ReadModes ioMode) => RegionalFileHandle ioMode pr -> Int -> cr ByteString
+ Data.ByteString.Char8.SaferFileHandles: hGet :: (FileHandle handle, ReadModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> Int -> cr ByteString
- Data.ByteString.Char8.SaferFileHandles: hGetContents :: (AncestorRegion pr cr, MonadIO cr, ReadModes ioMode) => RegionalFileHandle ioMode pr -> cr ByteString
+ Data.ByteString.Char8.SaferFileHandles: hGetContents :: (FileHandle handle, ReadModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> cr ByteString
- Data.ByteString.Char8.SaferFileHandles: hGetLine :: (AncestorRegion pr cr, MonadIO cr, ReadModes ioMode) => RegionalFileHandle ioMode pr -> cr ByteString
+ Data.ByteString.Char8.SaferFileHandles: hGetLine :: (FileHandle handle, ReadModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> cr ByteString
- Data.ByteString.Char8.SaferFileHandles: hGetNonBlocking :: (AncestorRegion pr cr, MonadIO cr, ReadModes ioMode) => RegionalFileHandle ioMode pr -> Int -> cr ByteString
+ Data.ByteString.Char8.SaferFileHandles: hGetNonBlocking :: (FileHandle handle, ReadModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> Int -> cr ByteString
- Data.ByteString.Char8.SaferFileHandles: hPut :: (AncestorRegion pr cr, MonadIO cr, WriteModes ioMode) => RegionalFileHandle ioMode pr -> ByteString -> cr ()
+ Data.ByteString.Char8.SaferFileHandles: hPut :: (FileHandle handle, WriteModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> ByteString -> cr ()
- Data.ByteString.Char8.SaferFileHandles: hPutStr :: (AncestorRegion pr cr, MonadIO cr, WriteModes ioMode) => RegionalFileHandle ioMode pr -> ByteString -> cr ()
+ Data.ByteString.Char8.SaferFileHandles: hPutStr :: (FileHandle handle, WriteModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> ByteString -> cr ()
- Data.ByteString.Char8.SaferFileHandles: hPutStrLn :: (AncestorRegion pr cr, MonadIO cr, WriteModes ioMode) => RegionalFileHandle ioMode pr -> ByteString -> cr ()
+ Data.ByteString.Char8.SaferFileHandles: hPutStrLn :: (FileHandle handle, WriteModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> ByteString -> cr ()
- Data.ByteString.Lazy.Char8.SaferFileHandles: hGet :: (AncestorRegion pr cr, MonadIO cr, ReadModes ioMode) => RegionalFileHandle ioMode pr -> Int -> cr ByteString
+ Data.ByteString.Lazy.Char8.SaferFileHandles: hGet :: (FileHandle handle, ReadModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> Int -> cr ByteString
- Data.ByteString.Lazy.Char8.SaferFileHandles: hGetContents :: (AncestorRegion pr cr, MonadIO cr, ReadModes ioMode) => RegionalFileHandle ioMode pr -> cr ByteString
+ Data.ByteString.Lazy.Char8.SaferFileHandles: hGetContents :: (FileHandle handle, ReadModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> cr ByteString
- Data.ByteString.Lazy.Char8.SaferFileHandles: hGetNonBlocking :: (AncestorRegion pr cr, MonadIO cr, ReadModes ioMode) => RegionalFileHandle ioMode pr -> Int -> cr ByteString
+ Data.ByteString.Lazy.Char8.SaferFileHandles: hGetNonBlocking :: (FileHandle handle, ReadModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> Int -> cr ByteString
- Data.ByteString.Lazy.Char8.SaferFileHandles: hPut :: (AncestorRegion pr cr, MonadIO cr, WriteModes ioMode) => RegionalFileHandle ioMode pr -> ByteString -> cr ()
+ Data.ByteString.Lazy.Char8.SaferFileHandles: hPut :: (FileHandle handle, WriteModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> ByteString -> cr ()
- Data.ByteString.Lazy.SaferFileHandles: hGet :: (AncestorRegion pr cr, MonadIO cr, ReadModes ioMode) => RegionalFileHandle ioMode pr -> Int -> cr ByteString
+ Data.ByteString.Lazy.SaferFileHandles: hGet :: (FileHandle handle, ReadModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> Int -> cr ByteString
- Data.ByteString.Lazy.SaferFileHandles: hGetContents :: (AncestorRegion pr cr, MonadIO cr, ReadModes ioMode) => RegionalFileHandle ioMode pr -> cr ByteString
+ Data.ByteString.Lazy.SaferFileHandles: hGetContents :: (FileHandle handle, ReadModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> cr ByteString
- Data.ByteString.Lazy.SaferFileHandles: hGetNonBlocking :: (AncestorRegion pr cr, MonadIO cr, ReadModes ioMode) => RegionalFileHandle ioMode pr -> Int -> cr ByteString
+ Data.ByteString.Lazy.SaferFileHandles: hGetNonBlocking :: (FileHandle handle, ReadModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> Int -> cr ByteString
- Data.ByteString.Lazy.SaferFileHandles: hPut :: (AncestorRegion pr cr, MonadIO cr, WriteModes ioMode) => RegionalFileHandle ioMode pr -> ByteString -> cr ()
+ Data.ByteString.Lazy.SaferFileHandles: hPut :: (FileHandle handle, WriteModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> ByteString -> cr ()
- Data.ByteString.Lazy.SaferFileHandles: hPutStr :: (AncestorRegion pr cr, MonadIO cr, WriteModes ioMode) => RegionalFileHandle ioMode pr -> ByteString -> cr ()
+ Data.ByteString.Lazy.SaferFileHandles: hPutStr :: (FileHandle handle, WriteModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> ByteString -> cr ()
- Data.ByteString.SaferFileHandles: hGet :: (AncestorRegion pr cr, MonadIO cr, ReadModes ioMode) => RegionalFileHandle ioMode pr -> Int -> cr ByteString
+ Data.ByteString.SaferFileHandles: hGet :: (FileHandle handle, ReadModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> Int -> cr ByteString
- Data.ByteString.SaferFileHandles: hGetContents :: (AncestorRegion pr cr, MonadIO cr, ReadModes ioMode) => RegionalFileHandle ioMode pr -> cr ByteString
+ Data.ByteString.SaferFileHandles: hGetContents :: (FileHandle handle, ReadModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> cr ByteString
- Data.ByteString.SaferFileHandles: hGetLine :: (AncestorRegion pr cr, MonadIO cr, ReadModes ioMode) => RegionalFileHandle ioMode pr -> cr ByteString
+ Data.ByteString.SaferFileHandles: hGetLine :: (FileHandle handle, ReadModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> cr ByteString
- Data.ByteString.SaferFileHandles: hGetNonBlocking :: (AncestorRegion pr cr, MonadIO cr, ReadModes ioMode) => RegionalFileHandle ioMode pr -> Int -> cr ByteString
+ Data.ByteString.SaferFileHandles: hGetNonBlocking :: (FileHandle handle, ReadModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> Int -> cr ByteString
- Data.ByteString.SaferFileHandles: hPut :: (AncestorRegion pr cr, MonadIO cr, WriteModes ioMode) => RegionalFileHandle ioMode pr -> ByteString -> cr ()
+ Data.ByteString.SaferFileHandles: hPut :: (FileHandle handle, WriteModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> ByteString -> cr ()
- Data.ByteString.SaferFileHandles: hPutStr :: (AncestorRegion pr cr, MonadIO cr, WriteModes ioMode) => RegionalFileHandle ioMode pr -> ByteString -> cr ()
+ Data.ByteString.SaferFileHandles: hPutStr :: (FileHandle handle, WriteModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> ByteString -> cr ()
- Data.ByteString.SaferFileHandles: hPutStrLn :: (AncestorRegion pr cr, MonadIO cr, WriteModes ioMode) => RegionalFileHandle ioMode pr -> ByteString -> cr ()
+ Data.ByteString.SaferFileHandles: hPutStrLn :: (FileHandle handle, WriteModes ioMode, AncestorRegion pr cr, MonadIO cr) => handle ioMode pr -> ByteString -> cr ()
Files
- Data/ByteString/Char8/SaferFileHandles.hs +30/−18
- Data/ByteString/Lazy/Char8/SaferFileHandles.hs +17/−9
- Data/ByteString/Lazy/SaferFileHandles.hs +22/−14
- Data/ByteString/SaferFileHandles.hs +30/−18
- safer-file-handles-bytestring.cabal +7/−7
Data/ByteString/Char8/SaferFileHandles.hs view
@@ -50,10 +50,8 @@ ) -- from safer-file-handles:-import System.IO.SaferFileHandles ( RegionalFileHandle- , ReadModes, WriteModes- )-import System.IO.SaferFileHandles.Unsafe ( wrap, wrap2 )+import System.IO.SaferFileHandles ( FileHandle, ReadModes, WriteModes )+import System.IO.SaferFileHandles.Unsafe ( wrap, wrap2 ) -------------------------------------------------------------------------------@@ -61,39 +59,53 @@ ------------------------------------------------------------------------------- -- | Wraps: @Data.ByteString.'B.hGetLine'@.-hGetLine ∷ (pr `AncestorRegion` cr, MonadIO cr, ReadModes ioMode)- ⇒ RegionalFileHandle ioMode pr → cr B.ByteString+hGetLine ∷ ( FileHandle handle, ReadModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → cr B.ByteString hGetLine = wrap E.hGetLine -- | Wraps: @Data.ByteString.'B.hGetContents'@.-hGetContents ∷ (pr `AncestorRegion` cr, MonadIO cr, ReadModes ioMode)- ⇒ RegionalFileHandle ioMode pr → cr B.ByteString+hGetContents ∷ ( FileHandle handle, ReadModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → cr B.ByteString hGetContents = wrap E.hGetContents -- | Wraps: @Data.ByteString.'B.hGet'@.-hGet ∷ (pr `AncestorRegion` cr, MonadIO cr, ReadModes ioMode)- ⇒ RegionalFileHandle ioMode pr → Int → cr B.ByteString+hGet ∷ ( FileHandle handle, ReadModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → Int → cr B.ByteString hGet = wrap2 E.hGet -- | Wraps: @Data.ByteString.'B.hGetNonBlocking'@.-hGetNonBlocking ∷ (pr `AncestorRegion` cr, MonadIO cr, ReadModes ioMode)- ⇒ RegionalFileHandle ioMode pr → Int → cr B.ByteString+hGetNonBlocking ∷ ( FileHandle handle, ReadModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → Int → cr B.ByteString hGetNonBlocking = wrap2 E.hGetNonBlocking -- | Wraps: @Data.ByteString.'B.hPut'@.-hPut ∷ (pr `AncestorRegion` cr, MonadIO cr, WriteModes ioMode)- ⇒ RegionalFileHandle ioMode pr → B.ByteString → cr ()+hPut ∷ ( FileHandle handle, WriteModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → B.ByteString → cr () hPut = wrap2 E.hPut -- | Wraps: @Data.ByteString.'B.hPutStr'@.-hPutStr ∷ (pr `AncestorRegion` cr, MonadIO cr, WriteModes ioMode)- ⇒ RegionalFileHandle ioMode pr → B.ByteString → cr ()+hPutStr ∷ ( FileHandle handle, WriteModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → B.ByteString → cr () hPutStr = wrap2 E.hPutStr -- | Wraps: @Data.ByteString.'B.hPutStrLn'@.-hPutStrLn ∷ (pr `AncestorRegion` cr, MonadIO cr, WriteModes ioMode)- ⇒ RegionalFileHandle ioMode pr → B.ByteString → cr ()+hPutStrLn ∷ ( FileHandle handle, WriteModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → B.ByteString → cr () hPutStrLn = wrap2 E.hPutStrLn
Data/ByteString/Lazy/Char8/SaferFileHandles.hs view
@@ -42,7 +42,7 @@ ) -- from safer-file-handles:-import System.IO.SaferFileHandles ( RegionalFileHandle , ReadModes, WriteModes )+import System.IO.SaferFileHandles ( FileHandle, ReadModes, WriteModes ) import System.IO.SaferFileHandles.Unsafe ( wrap, wrap2 ) @@ -51,24 +51,32 @@ ------------------------------------------------------------------------------- -- | Wraps: @Data.ByteString.'B.hGetContents'@.-hGetContents ∷ (pr `AncestorRegion` cr, MonadIO cr, ReadModes ioMode)- ⇒ RegionalFileHandle ioMode pr → cr B.ByteString+hGetContents ∷ ( FileHandle handle, ReadModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → cr B.ByteString hGetContents = wrap E.hGetContents -- | Wraps: @Data.ByteString.'B.hGet'@.-hGet ∷ (pr `AncestorRegion` cr, MonadIO cr, ReadModes ioMode)- ⇒ RegionalFileHandle ioMode pr → Int → cr B.ByteString+hGet ∷ ( FileHandle handle, ReadModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → Int → cr B.ByteString hGet = wrap2 E.hGet -- | Wraps: @Data.ByteString.'B.hGetNonBlocking'@.-hGetNonBlocking ∷ (pr `AncestorRegion` cr, MonadIO cr, ReadModes ioMode)- ⇒ RegionalFileHandle ioMode pr → Int → cr B.ByteString+hGetNonBlocking ∷ ( FileHandle handle, ReadModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → Int → cr B.ByteString hGetNonBlocking = wrap2 E.hGetNonBlocking -- | Wraps: @Data.ByteString.'B.hPut'@.-hPut ∷ (pr `AncestorRegion` cr, MonadIO cr, WriteModes ioMode)- ⇒ RegionalFileHandle ioMode pr → B.ByteString → cr ()+hPut ∷ ( FileHandle handle, WriteModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → B.ByteString → cr () hPut = wrap2 E.hPut
Data/ByteString/Lazy/SaferFileHandles.hs view
@@ -46,10 +46,8 @@ ) -- from safer-file-handles:-import System.IO.SaferFileHandles ( RegionalFileHandle- , ReadModes, WriteModes- )-import System.IO.SaferFileHandles.Unsafe ( wrap, wrap2 )+import System.IO.SaferFileHandles ( FileHandle, ReadModes, WriteModes )+import System.IO.SaferFileHandles.Unsafe ( wrap, wrap2 ) -------------------------------------------------------------------------------@@ -57,29 +55,39 @@ ------------------------------------------------------------------------------- -- | Wraps: @Data.ByteString.'B.hGetContents'@.-hGetContents ∷ (pr `AncestorRegion` cr, MonadIO cr, ReadModes ioMode)- ⇒ RegionalFileHandle ioMode pr → cr B.ByteString+hGetContents ∷ ( FileHandle handle, ReadModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → cr B.ByteString hGetContents = wrap E.hGetContents -- | Wraps: @Data.ByteString.'B.hGet'@.-hGet ∷ (pr `AncestorRegion` cr, MonadIO cr, ReadModes ioMode)- ⇒ RegionalFileHandle ioMode pr → Int → cr B.ByteString+hGet ∷ ( FileHandle handle, ReadModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → Int → cr B.ByteString hGet = wrap2 E.hGet -- | Wraps: @Data.ByteString.'B.hGetNonBlocking'@.-hGetNonBlocking ∷ (pr `AncestorRegion` cr, MonadIO cr, ReadModes ioMode)- ⇒ RegionalFileHandle ioMode pr → Int → cr B.ByteString+hGetNonBlocking ∷ ( FileHandle handle, ReadModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → Int → cr B.ByteString hGetNonBlocking = wrap2 E.hGetNonBlocking -- | Wraps: @Data.ByteString.'B.hPut'@.-hPut ∷ (pr `AncestorRegion` cr, MonadIO cr, WriteModes ioMode)- ⇒ RegionalFileHandle ioMode pr → B.ByteString → cr ()+hPut ∷ ( FileHandle handle, WriteModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → B.ByteString → cr () hPut = wrap2 E.hPut -- | Wraps: @Data.ByteString.'B.hPutStr'@.-hPutStr ∷ (pr `AncestorRegion` cr, MonadIO cr, WriteModes ioMode)- ⇒ RegionalFileHandle ioMode pr → B.ByteString → cr ()+hPutStr ∷ ( FileHandle handle, WriteModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → B.ByteString → cr () hPutStr = wrap2 E.hPutStr
Data/ByteString/SaferFileHandles.hs view
@@ -50,10 +50,8 @@ ) -- from safer-file-handles:-import System.IO.SaferFileHandles ( RegionalFileHandle- , ReadModes, WriteModes- )-import System.IO.SaferFileHandles.Unsafe ( wrap, wrap2 )+import System.IO.SaferFileHandles ( FileHandle, ReadModes, WriteModes )+import System.IO.SaferFileHandles.Unsafe ( wrap, wrap2 ) -------------------------------------------------------------------------------@@ -61,38 +59,52 @@ ------------------------------------------------------------------------------- -- | Wraps: @Data.ByteString.'B.hGetLine'@.-hGetLine ∷ (pr `AncestorRegion` cr, MonadIO cr, ReadModes ioMode)- ⇒ RegionalFileHandle ioMode pr → cr B.ByteString+hGetLine ∷ ( FileHandle handle, ReadModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → cr B.ByteString hGetLine = wrap E.hGetLine -- | Wraps: @Data.ByteString.'B.hGetContents'@.-hGetContents ∷ (pr `AncestorRegion` cr, MonadIO cr, ReadModes ioMode)- ⇒ RegionalFileHandle ioMode pr → cr B.ByteString+hGetContents ∷ ( FileHandle handle, ReadModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → cr B.ByteString hGetContents = wrap E.hGetContents -- | Wraps: @Data.ByteString.'B.hGet'@.-hGet ∷ (pr `AncestorRegion` cr, MonadIO cr, ReadModes ioMode)- ⇒ RegionalFileHandle ioMode pr → Int → cr B.ByteString+hGet ∷ ( FileHandle handle, ReadModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → Int → cr B.ByteString hGet = wrap2 E.hGet -- | Wraps: @Data.ByteString.'B.hGetNonBlocking'@.-hGetNonBlocking ∷ (pr `AncestorRegion` cr, MonadIO cr, ReadModes ioMode)- ⇒ RegionalFileHandle ioMode pr → Int → cr B.ByteString+hGetNonBlocking ∷ ( FileHandle handle, ReadModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → Int → cr B.ByteString hGetNonBlocking = wrap2 E.hGetNonBlocking -- | Wraps: @Data.ByteString.'B.hPut'@.-hPut ∷ (pr `AncestorRegion` cr, MonadIO cr, WriteModes ioMode)- ⇒ RegionalFileHandle ioMode pr → B.ByteString → cr ()+hPut ∷ ( FileHandle handle, WriteModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → B.ByteString → cr () hPut = wrap2 E.hPut -- | Wraps: @Data.ByteString.'B.hPutStr'@.-hPutStr ∷ (pr `AncestorRegion` cr, MonadIO cr, WriteModes ioMode)- ⇒ RegionalFileHandle ioMode pr → B.ByteString → cr ()+hPutStr ∷ ( FileHandle handle, WriteModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → B.ByteString → cr () hPutStr = wrap2 E.hPutStr -- | Wraps: @Data.ByteString.'B.hPutStrLn'@.-hPutStrLn ∷ (pr `AncestorRegion` cr, MonadIO cr, WriteModes ioMode)- ⇒ RegionalFileHandle ioMode pr → B.ByteString → cr ()+hPutStrLn ∷ ( FileHandle handle, WriteModes ioMode+ , pr `AncestorRegion` cr, MonadIO cr+ )+ ⇒ handle ioMode pr → B.ByteString → cr () hPutStrLn = wrap2 E.hPutStrLn
safer-file-handles-bytestring.cabal view
@@ -1,5 +1,5 @@ name: safer-file-handles-bytestring-version: 0.1.0.3+version: 0.2 cabal-version: >=1.6 build-type: Simple license: BSD3@@ -18,12 +18,12 @@ Library GHC-Options: -Wall- build-depends: base >= 4 && < 4.4- , bytestring >= 0.9 && < 0.10- , regions >= 0.8 && < 0.9- , transformers >= 0.2 && < 0.3- , explicit-iomodes-bytestring >= 0.1 && < 0.2- , safer-file-handles >= 0.9 && < 0.10+ build-depends: base >= 4 && < 4.4+ , bytestring >= 0.9 && < 0.10+ , regions >= 0.9 && < 0.10+ , transformers >= 0.2 && < 0.3+ , explicit-iomodes-bytestring >= 0.1 && < 0.2+ , safer-file-handles >= 0.10 && < 0.11 exposed-modules: Data.ByteString.SaferFileHandles Data.ByteString.Char8.SaferFileHandles Data.ByteString.Lazy.SaferFileHandles