Module Bos.OS.U

module U: sig .. end
Low level Unix access.

These functions simply call functions from the Unix module and replace strings with Fpath.t where appropriate. They also provide more fine grained error handling, for example Bos.OS.Path.stat converts the error to a message while Bos.OS.U.stat gives you the Unix error.

Error handling

type 'a result = ('a, [ `Unix of Unix.error ]) Result.result 
The type for Unix results.
val pp_error : Format.formatter -> [ `Unix of Unix.error ] -> unit
pp_error ppf e prints e on ppf.
val open_error : 'a result -> ('a, [> `Unix of Unix.error ]) Result.result
open_error r allows to combine a closed unix error variant with other variants.
val error_to_msg : 'a result -> ('a, [> Rresult.R.msg ]) Result.result
error_to_msg r converts unix errors in r to an error message.

Wrapping Unix calls

val call : ('a -> 'b) -> 'a -> 'b result
call f v is Ok (f v) but Unix.EINTR errors are catched and handled by retrying the call. Other errors e are catched aswell and returned as Error (`Unix e).

File system operations

val mkdir : Fpath.t -> Unix.file_perm -> unit result
mkdir is Unix.mkdir, see POSIX mkdir.
val link : Fpath.t -> Fpath.t -> unit result
link is, see POSIX link.
val unlink : Fpath.t -> unit result
stat is Unix.unlink, POSIX unlink.
val rename : Fpath.t -> Fpath.t -> unit result
rename is Unix.rename, see POSIX rename.
val stat : Fpath.t -> Unix.stats result
stat is Unix.stat, see POSIX stat.
val lstat : Fpath.t -> Unix.stats result
lstat is Unix.lstat, see POSIX lstat.
val truncate : Fpath.t -> int -> unit result
truncate is Unix.truncate, see POSIX truncate.