Module Command

module Command: sig .. end

Useful high-level system operations.


File Utilities

val filename : string -> string -> string
val pp_to_file : string -> (Stdlib.Format.formatter -> unit) -> unit

pp_to_file file pp runs pp on a formatter that writes into file. The formatter is always properly flushed and closed on return. Exceptions in pp are re-raised after closing.

val pp_from_file : Stdlib.Format.formatter -> string -> unit

pp_from_file fmt file dumps the content of file into the fmt. Exceptions in pp are re-raised after closing.

val bincopy : bytes -> Stdlib.in_channel -> Stdlib.out_channel -> unit

copy buffer cin cout reads cin until end-of-file and copy it in cout. buffer is a temporary string used during the copy. Recommended size is 2048.

val copy : string -> string -> unit

copy source target copies source file to target file using bincopy.

val read_file : string -> (Stdlib.in_channel -> 'a) -> 'a

Properly close the channel and re-raise exceptions

val read_lines : string -> (string -> unit) -> unit

Iter over all text lines in the file

val write_file : string -> (Stdlib.out_channel -> 'a) -> 'a

Properly close the channel and re-raise exceptions

val print_file : string -> (Stdlib.Format.formatter -> 'a) -> 'a

Properly flush and close the channel and re-raise exceptions

Timing Utility

type timer = float Stdlib.ref 
type 'a result = 
| Result of 'a
| Error of exn
val catch : ('a -> 'b) -> 'a -> 'b result
val return : 'a result -> 'a
val time : ?rmax:timer -> ?radd:timer -> ('a -> 'b) -> 'a -> 'b

Compute the elapsed time with Sys.time. The rmax timer is maximized and the radd timer is cumulated. Computed result is returned, or exception is re-raised.

System commands

val full_command : string ->
string array ->
stdin:Unix.file_descr ->
stdout:Unix.file_descr -> stderr:Unix.file_descr -> Unix.process_status

Same arguments as but returns only when execution is complete.

type process_result = 
| Not_ready of (unit -> unit)
| Result of Unix.process_status (*

Not_ready f means that the child process is not yet finished and may be terminated manually with f ().

*)
val full_command_async : string ->
string array ->
stdin:Unix.file_descr ->
stdout:Unix.file_descr ->
stderr:Unix.file_descr -> unit -> process_result

Same arguments as .

val command_async : ?stdout:Stdlib.Buffer.t ->
?stderr:Stdlib.Buffer.t ->
string -> string array -> unit -> process_result

Same arguments as .

val command : ?timeout:int ->
?stdout:Stdlib.Buffer.t ->
?stderr:Stdlib.Buffer.t -> string -> string array -> Unix.process_status

Same arguments as . When this function returns, the stdout and stderr of the child process will be filled into the arguments buffer.