Package Info

ghc-atomic-write


Atomically write to a file


Unspecified

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:

  • <http://apidock.com/rails/File/atomic_write/class Ruby on Rails includes a

similar method called atomic_write>

<https://github.com/chef/chef/blob/c4631816132fcfefaba3d123a1d0dfe8bc2866bb/lib/chef/file_content_management/deploy/mv_unix.rb#L23:L71 Chef includes atomic update functionality>

  • <https://github.com/sashka/atomicfile 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.


License: MIT
URL: https://hackage.haskell.org/package/atomic-write

Categories

Releases

Package Version Update ID Released Package Hub Version Platforms Subpackages
0.2.0.7-bp155.2.17 info GA Release 2023-05-22 15 SP5
  • AArch64
  • ppc64le
  • s390x
  • x86-64
  • ghc-atomic-write
  • ghc-atomic-write-devel
0.2.0.7-bp154.1.12 info GA Release 2022-05-09 15 SP4
  • AArch64
  • ppc64le
  • x86-64
  • ghc-atomic-write
  • ghc-atomic-write-devel
0.2.0.5-bp150.2.4 info GA Release 2018-08-01 15
  • AArch64
  • ghc-atomic-write
  • ghc-atomic-write-devel
0.2.0.5-bp150.2.6 info GA Release 2018-07-31 15
  • ppc64le
  • ghc-atomic-write
  • ghc-atomic-write-devel
0.2.0.5-bp150.2.7 info GA Release 2018-07-30 15
  • x86-64
  • ghc-atomic-write
  • ghc-atomic-write-devel