safeio 0.0.5.0 → 0.0.6.0
raw patch · 6 files changed
+58/−31 lines, 6 filesdep +tastydep +tasty-hunitdep +tasty-thdep −test-frameworkdep −test-framework-hunitdep −test-framework-th
Dependencies added: tasty, tasty-hunit, tasty-th
Dependencies removed: test-framework, test-framework-hunit, test-framework-th
Files
- ChangeLog +4/−0
- Data/Conduit/SafeWrite.hs +1/−1
- README.md +6/−0
- System/IO/SafeWrite.hs +13/−3
- System/IO/SafeWrite/Tests.hs +4/−4
- safeio.cabal +30/−23
ChangeLog view
@@ -1,3 +1,7 @@+Version 0.0.6.0 2023-06-27 by luispedro+ * Add compatibility code for unix-2.8 (which changed the signature of+ openFd)+ Version 0.0.5.0 2018-01-18 by luispedro * Deprecate safeSinkFile * Add fake Windows support
Data/Conduit/SafeWrite.hs view
@@ -22,7 +22,7 @@ -- This function is deprecated in favor of 'Data.Conduit.Binary.SinkFileCautious' safeSinkFile :: (MonadResource m) => FilePath -- ^ Final filename- -> C.Sink B.ByteString m ()+ -> C.ConduitT B.ByteString C.Void m () safeSinkFile finalname = atomicConduitUseFile finalname CC.sinkHandle -- | Conduit using a Handle in an atomic way
README.md view
@@ -1,5 +1,11 @@ # SafeIO: Haskell library for safe (atomic) IO +[](https://hackage.haskell.org/package/safeio)+[](http://packdeps.haskellers.com/feed?needle=safeio)+[](http://stackage.org/lts/package/safeio)+[](https://travis-ci.com/luispedro/safeio)+Atomic IO+ This is a simple module, which enables writing in atomic mode. It implements the following 4 step procedure:
System/IO/SafeWrite.hs view
@@ -12,10 +12,20 @@ import System.Directory (renameFile, removeFile) #ifndef WINDOWS-import System.Posix.IO (openFd, defaultFileFlags, closeFd, OpenMode(..))+import System.Posix.IO (defaultFileFlags, closeFd, OpenMode(..))+import qualified System.Posix.IO+import qualified System.Posix.Types import System.Posix.Unistd (fileSynchronise) #endif ++openFd :: FilePath -> OpenMode -> System.Posix.IO.OpenFileFlags -> IO System.Posix.Types.Fd+#if MIN_VERSION_base (4,18,0)+openFd = System.Posix.IO.openFd+#else+openFd fname mode flags = System.Posix.IO.openFd fname mode Nothing flags+#endif+ -- | Sync a file to disk -- -- On Windows, this is a fake function.@@ -23,11 +33,11 @@ -> IO () #ifndef WINDOWS syncFile fname = do- bracket (openFd fname ReadWrite Nothing defaultFileFlags)+ bracket (openFd fname ReadWrite defaultFileFlags) closeFd fileSynchronise -- The code below will not work on Windows- bracket (openFd (takeDirectory fname) ReadOnly Nothing defaultFileFlags)+ bracket (openFd (takeDirectory fname) ReadOnly defaultFileFlags) closeFd fileSynchronise #else
System/IO/SafeWrite/Tests.hs view
@@ -2,11 +2,11 @@ module Main where -import Test.Framework.TH-import Test.HUnit-import Test.Framework.Providers.HUnit+import Test.Tasty.TH+import Test.Tasty.HUnit import qualified Data.ByteString as B+import qualified Data.ByteString.Char8 as B8 import qualified Data.Conduit as C import qualified Data.Conduit.Combinators as CC import Data.Conduit ((.|))@@ -80,7 +80,7 @@ where writeout h = C.awaitForever $ \line -> do C.yield line- liftIO $ B.hPutStrLn h (B.take 8 line)+ liftIO $ B8.hPutStrLn h (B.take 8 line) case_conduit_not_create_on_exception = do (C.runConduitRes $
safeio.cabal view
@@ -1,9 +1,11 @@--- This file has been generated from package.yaml by hpack version 0.18.1.+cabal-version: 1.12++-- This file has been generated from package.yaml by hpack version 0.35.1. -- -- see: https://github.com/sol/hpack name: safeio-version: 0.0.5.0+version: 0.0.6.0 synopsis: Write output to disk atomically description: This package implements utilities to perform atomic output so as to avoid the problem of partial intermediate files. category: IO@@ -14,62 +16,67 @@ license: MIT license-file: COPYING build-type: Simple-cabal-version: >= 1.10- extra-source-files:- ChangeLog README.md+ ChangeLog source-repository head type: git location: https://github.com/luispedro/safeio library+ exposed-modules:+ System.IO.SafeWrite+ Data.Conduit.SafeWrite hs-source-dirs: ./- default-extensions: BangPatterns OverloadedStrings CPP+ default-extensions:+ BangPatterns+ OverloadedStrings+ CPP ghc-options: -Wall build-depends:- base > 4.8 && < 5+ base >4.8 && <5 , bytestring- , conduit >= 1.0+ , conduit >=1.0 , conduit-combinators , directory , exceptions , filepath , resourcet , unix+ default-language: Haskell2010 if os(windows) cpp-options: -DWINDOWS- exposed-modules:- System.IO.SafeWrite- Data.Conduit.SafeWrite- default-language: Haskell2010 test-suite safeiotest type: exitcode-stdio-1.0 main-is: System/IO/SafeWrite/Tests.hs+ other-modules:+ Data.Conduit.SafeWrite+ System.IO.SafeWrite+ Paths_safeio hs-source-dirs: ./- default-extensions: BangPatterns OverloadedStrings CPP+ default-extensions:+ BangPatterns+ OverloadedStrings+ CPP ghc-options: -Wall build-depends:- base > 4.8 && < 5+ HUnit+ , base >4.8 && <5 , bytestring- , conduit >= 1.0+ , conduit >=1.0 , conduit-combinators , directory , exceptions , filepath , resourcet+ , tasty+ , tasty-hunit+ , tasty-th , unix- , HUnit- , test-framework- , test-framework-hunit- , test-framework-th+ default-language: Haskell2010 if os(windows) cpp-options: -DWINDOWS- other-modules:- Data.Conduit.SafeWrite- System.IO.SafeWrite- default-language: Haskell2010