-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/

-- | Atomically write to a file
--   
--   Atomically write to a file on POSIX-compliant systems while preserving
--   permissions.
--   
--   On most Unix systems, mv is an atomic operation. This makes it
--   simple to write to a file atomically just by using the mv operation.
--   However, this will destroy the permissions on the original file. This
--   library does the following to preserve permissions while atomically
--   writing to a file:
--   
--   
--   
- If an original file exists, take those permissions and apply them
--   to the temp file before mving the file into place.
--   
- If the original file does not exist, create a following with
--   default permissions (based on the currently-active umask).
--   
--   
--   This way, when the file is mv'ed into place, the permissions
--   will be the ones held by the original file.
--   
--   This library is based on similar implementations found in common
--   libraries in Ruby and Python:
--   
--   
--   
- Ruby on Rails includes a similar method called
--   atomic_write
--   
- Chef includes atomic update functionality
--   
- There is a python library for atomically updating a
--   file
--   
--   
--   To use `atomic-write`, import the module corresponding to the type you
--   wish to write atomically, e.g., to write a (strict) ByteString
--   atomically:
--   
--   
--   import System.AtomicWrite.Writer.ByteString
--   
--   
--   Then you can use the atomicWriteFile function that accepts a
--   FilePath and a ByteString, e.g.:
--   
--   
--   atomicWriteFile myFilePath myByteString
--   
@package atomic-write
@version 0.2.1.1

-- | Provides functionality to dump the contents of a ByteString to a file
--   in text mode.
module System.AtomicWrite.Writer.ByteString

-- | Creates or modifies a file atomically on POSIX-compliant systems while
--   preserving permissions.
atomicWriteFile :: FilePath -> ByteString -> IO ()

-- | Creates or modifies a file atomically on POSIX-compliant systems and
--   updates permissions.
atomicWriteFileWithMode :: FileMode -> FilePath -> ByteString -> IO ()

-- | Provides functionality to dump the contents of a ByteString to a file
--   open in binary mode
module System.AtomicWrite.Writer.ByteString.Binary

-- | Creates or modifies a file atomically on POSIX-compliant systems while
--   preserving permissions. The file is opened in binary mode.
atomicWriteFile :: FilePath -> ByteString -> IO ()

-- | Creates or modifies a file atomically on POSIX-compliant systems and
--   updates permissions. The file is opened in binary mode.
atomicWriteFileWithMode :: FileMode -> FilePath -> ByteString -> IO ()

-- | Provides functionality to dump the contents of a ByteStringBuilder to
--   a file.
module System.AtomicWrite.Writer.ByteStringBuilder

-- | Creates or modifies a file atomically on POSIX-compliant systems while
--   preserving permissions.
atomicWriteFile :: FilePath -> Builder -> IO ()

-- | Creates or modifies a file atomically on POSIX-compliant systems and
--   updates permissions.
atomicWriteFileWithMode :: FileMode -> FilePath -> Builder -> IO ()

-- | Provides functionality to dump the contents of a Lazy ByteString to a
--   file.
module System.AtomicWrite.Writer.LazyByteString

-- | Creates or modifies a file atomically on POSIX-compliant systems while
--   preserving permissions.
atomicWriteFile :: FilePath -> ByteString -> IO ()

-- | Creates or modifies a file atomically on POSIX-compliant systems and
--   updates permissions
atomicWriteFileWithMode :: FileMode -> FilePath -> ByteString -> IO ()

-- | Provides functionality to dump the contents of a Lazy ByteString to a
--   file in binary mode.
module System.AtomicWrite.Writer.LazyByteString.Binary

-- | Creates or modifies a file atomically on POSIX-compliant systems while
--   preserving permissions.
atomicWriteFile :: FilePath -> ByteString -> IO ()

-- | Creates or modifies a file atomically on POSIX-compliant systems and
--   updates permissions
atomicWriteFileWithMode :: FileMode -> FilePath -> ByteString -> IO ()

-- | Provides functionality to dump the contents of a Text to a file.
module System.AtomicWrite.Writer.LazyText

-- | Creates a file atomically on POSIX-compliant systems while preserving
--   permissions.
atomicWriteFile :: FilePath -> Text -> IO ()

-- | Creates or modifies a file atomically on POSIX-compliant systems and
--   updates permissions
atomicWriteFileWithMode :: FileMode -> FilePath -> Text -> IO ()

-- | Provides functionality to dump the contents of a Text to a file in
--   binary mode.
module System.AtomicWrite.Writer.LazyText.Binary

-- | Creates a file atomically on POSIX-compliant systems while preserving
--   permissions.
atomicWriteFile :: FilePath -> Text -> IO ()

-- | Creates or modifies a file atomically on POSIX-compliant systems and
--   updates permissions
atomicWriteFileWithMode :: FileMode -> FilePath -> Text -> IO ()

-- | Provides functionality to dump the contents of a String to a file.
module System.AtomicWrite.Writer.String

-- | Creates or modifies a file atomically on POSIX-compliant systems while
--   preserving permissions.
atomicWriteFile :: FilePath -> String -> IO ()

-- | A general version of atomicWriteFile
atomicWithFile :: FilePath -> (Handle -> IO ()) -> IO ()

-- | Creates or modifies a file atomically on POSIX-compliant systems and
--   updates permissions
atomicWriteFileWithMode :: FileMode -> FilePath -> String -> IO ()

-- | A general version of atomicWriteFileWithMode
atomicWithFileAndMode :: FileMode -> FilePath -> (Handle -> IO ()) -> IO ()

-- | Provides functionality to dump the contents of a String to a file in
--   binary mode.
module System.AtomicWrite.Writer.String.Binary

-- | Creates or modifies a file atomically on POSIX-compliant systems while
--   preserving permissions.
atomicWriteFile :: FilePath -> String -> IO ()

-- | A general version of atomicWriteFile
atomicWithFile :: FilePath -> (Handle -> IO ()) -> IO ()

-- | Creates or modifies a file atomically on POSIX-compliant systems and
--   updates permissions
atomicWriteFileWithMode :: FileMode -> FilePath -> String -> IO ()

-- | A general version of atomicWriteFileWithMode
atomicWithFileAndMode :: FileMode -> FilePath -> (Handle -> IO ()) -> IO ()

-- | Provides functionality to dump the contents of a Text to a file.
module System.AtomicWrite.Writer.Text

-- | Creates a file atomically on POSIX-compliant systems while preserving
--   permissions.
atomicWriteFile :: FilePath -> Text -> IO ()

-- | Creates or modifies a file atomically on POSIX-compliant systems and
--   updates permissions
atomicWriteFileWithMode :: FileMode -> FilePath -> Text -> IO ()

-- | Provides functionality to dump the contents of a Text to a file in
--   binary mode.
module System.AtomicWrite.Writer.Text.Binary

-- | Creates a file atomically on POSIX-compliant systems while preserving
--   permissions.
atomicWriteFile :: FilePath -> Text -> IO ()

-- | Creates or modifies a file atomically on POSIX-compliant systems and
--   updates permissions
atomicWriteFileWithMode :: FileMode -> FilePath -> Text -> IO ()
