module Atomic_edit: Atomic_edit
type
return_type =
| |
Ok |
| |
Changed of string * string |
| |
Abort |
the return value of atomic_edit
val atomic_edit : f:(string -> [ `Abort | `Ok ]) -> string -> return_type
atomic_edit ~f filepath
edit filepath
by making a unique copy (peer)
that can be openly changed without holding any locks on the original. When
the function returns, a short term exclusive lock is held while overwriting
the original with the edited copy. If the mtime of the original is changed
since the copy was made, the replacement is aborted (indicating another
atomic_edit
was first to update the file, or some other process) and
Changed is returned with a tuple (warning message * terd file)
. The terd
file contains the edits and might be used to diff or re-edit.