type file_status = {action : file_action,
domain : string,
+ dir : string,
file : string}
val registerFileHandler : (file_status -> unit) -> unit
(* Register code to run before or after making all changes. *)
val handleChanges : file_status list -> unit
+
+ val shell : string list -> bool
+ val shellF : string list * (string -> string) -> unit
+
+ val concatTo : (string -> bool) -> string -> unit
+ (* Search through the result configuration hierarchy for all files matching
+ * the predicate, concatenating their contents in arbitrary order to the
+ * given file. *)
+
+ val enumerateTo : (string -> bool) -> string -> string -> unit
+ (* Search through the result configuration hierarchy for all files matching
+ * the predicate, writing a list of their domains to the file named by the
+ * third argument, delimiting the entries with the second argument. *)
+
+ val hostname : unit -> string
+ (* Get hostname of this machine *)
+
+ val readList : string -> string list
+ val writeList : string * string list -> unit
+ (* Reading and writing lists of strings stored on separate lines in files *)
end