Name : ghc-atomic-write
| |
Version : 0.2.0.5
| Vendor : openSUSE
|
Release : bp150.2.7
| Date : 2018-07-30 20:40:08
|
Group : Development/Libraries/Haskell
| Source RPM : ghc-atomic-write-0.2.0.5-bp150.2.7.src.rpm
|
Size : 0.03 MB
| |
Packager : https://bugs_opensuse_org
| |
Summary : Atomically write to a file
|
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 `mv`ing 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 atomicWrite function that accepts a `FilePath` and a `ByteString`, e.g.:
> atomicWrite myFilePath myByteString.
|
RPM found in directory: /packages/linux-pbone/ftp5.gwdg.de/pub/opensuse/repositories/openSUSE:/Backports:/SLE-15/standard/x86_64 |