-- 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, <a>mv</a> 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:
--   
--   <ul>
--   <li>If an original file exists, take those permissions and apply them
--   to the temp file before <a>mv</a>ing the file into place.</li>
--   <li>If the original file does not exist, create a following with
--   default permissions (based on the currently-active umask).</li>
--   </ul>
--   
--   This way, when the file is <a>mv</a>'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:
--   
--   <ul>
--   <li><a>Ruby on Rails includes a similar method called
--   atomic_write</a></li>
--   <li><a>Chef includes atomic update functionality</a></li>
--   <li><a>There is a python library for atomically updating a
--   file</a></li>
--   </ul>
--   
--   To use `atomic-write`, import the module corresponding to the type you
--   wish to write atomically, e.g., to write a (strict) ByteString
--   atomically:
--   
--   <pre>
--   import System.AtomicWrite.Writer.ByteString
--   </pre>
--   
--   Then you can use the atomicWrite function that accepts a
--   <a>FilePath</a> and a <a>ByteString</a>, e.g.:
--   
--   <pre>
--   atomicWrite myFilePath myByteString
--   </pre>
@package atomic-write
@version 0.2.0.5

module System.AtomicWrite.Writer.ByteString

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

module System.AtomicWrite.Writer.ByteStringBuilder

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

module System.AtomicWrite.Writer.LazyByteString

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

module System.AtomicWrite.Writer.String

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

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

module System.AtomicWrite.Writer.Text

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