Package0.2.1.1System
atomic-write
Atomically write to a file
- Version0.2.1.1
- CategorySystem
- LicenceMIT
- AuthorJustin Leitgeb
- Maintainersupport@stackbuilders.com
- Homepagegithub.com/stackbuilders/atomic-write
- Pinned byhackage atomic-write 0.2.1.1
- Sourcehackage.haskell.org/package/atomic-write-0.2.1.1
Modules
11 modules- System.AtomicWrite.Writer.ByteString2Provides functionality to dump the contents of a ByteString
- System.AtomicWrite.Writer.ByteString.Binary2Provides functionality to dump the contents of a ByteString
- System.AtomicWrite.Writer.ByteStringBuilder2Provides functionality to dump the contents of a ByteStringBuilder
- System.AtomicWrite.Writer.LazyByteString2Provides functionality to dump the contents of a Lazy ByteString
- System.AtomicWrite.Writer.LazyByteString.Binary2Provides functionality to dump the contents of a Lazy ByteString
- System.AtomicWrite.Writer.LazyText2Provides functionality to dump the contents of a Text
- System.AtomicWrite.Writer.LazyText.Binary2Provides functionality to dump the contents of a Text
- System.AtomicWrite.Writer.String4Provides functionality to dump the contents of a String
- System.AtomicWrite.Writer.String.Binary4Provides functionality to dump the contents of a String
- System.AtomicWrite.Writer.Text2Provides functionality to dump the contents of a Text
- System.AtomicWrite.Writer.Text.Binary2Provides functionality to dump the contents of a Text
Description
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
Depends on
7 packages- base-4.20.2.0with GHC
- bytestring-0.12.2.0with GHC
- directory-1.3.8.5with GHC
- filepath-1.5.4.0with GHC
- temporary-1.3in this set
- text-2.1.3with GHC
- unix-compat-0.7.4.1in this set