sig
  val filename : string -> string -> string
  val pp_to_file : string -> (Stdlib.Format.formatter -> unit) -> unit
  val pp_from_file : Stdlib.Format.formatter -> string -> unit
  val bincopy : bytes -> Stdlib.in_channel -> Stdlib.out_channel -> unit
  val copy : string -> string -> unit
  val read_file : string -> (Stdlib.in_channel -> 'a) -> 'a
  val read_lines : string -> (string -> unit) -> unit
  val write_file : string -> (Stdlib.out_channel -> 'a) -> 'a
  val print_file : string -> (Stdlib.Format.formatter -> 'a) -> 'a
  type timer = float Stdlib.ref
  type 'a result = Result of '| Error of exn
  val catch : ('-> 'b) -> '-> 'Command.result
  val return : 'Command.result -> 'a
  val time :
    ?rmax:Command.timer -> ?radd:Command.timer -> ('-> 'b) -> '-> 'b
  val full_command :
    string ->
    string array ->
    stdin:Unix.file_descr ->
    stdout:Unix.file_descr -> stderr:Unix.file_descr -> Unix.process_status
  type process_result =
      Not_ready of (unit -> unit)
    | Result of Unix.process_status
  val full_command_async :
    string ->
    string array ->
    stdin:Unix.file_descr ->
    stdout:Unix.file_descr ->
    stderr:Unix.file_descr -> unit -> Command.process_result
  val command_async :
    ?stdout:Stdlib.Buffer.t ->
    ?stderr:Stdlib.Buffer.t ->
    string -> string array -> unit -> Command.process_result
  val command :
    ?timeout:int ->
    ?stdout:Stdlib.Buffer.t ->
    ?stderr:Stdlib.Buffer.t -> string -> string array -> Unix.process_status
end