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:
file before mv
ing the file into place.
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:
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>
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 Version | Update ID | Released | Package Hub Version | Platforms | Subpackages |
---|---|---|---|---|---|
0.2.0.7-bp156.3.4 info | GA Release | 2024-02-21 | 15 SP6 |
|
|
0.2.0.7-bp155.2.17 info | GA Release | 2023-05-22 | 15 SP5 |
|
|
0.2.0.7-bp154.1.12 info | GA Release | 2022-05-09 | 15 SP4 |
|
|
0.2.0.5-bp150.2.4 info | GA Release | 2018-08-01 | 15 |
|
|
0.2.0.5-bp150.2.6 info | GA Release | 2018-07-31 | 15 |
|
|
0.2.0.5-bp150.2.7 info | GA Release | 2018-07-30 | 15 |
|
|