type file_status = {action : file_action,
domain : string,
+ dir : string,
file : string}
val registerFileHandler : (file_status -> unit) -> 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 *)
+
+ val lineInFile : string -> string -> bool
+ (* Is there a line in the file (first arg) that matches that given? *)
+
+ val inGroup : {user : string, group : string} -> bool
+ (* Check membership in a UNIX group. *)
+
+ val mkDirAll : string -> unit
+ (* [mkDirAll p] creates directory "p", creating all parent directories, as
+ * necessary. *)
+
+ val remove : ''a list * ''a -> ''a list
+ val removeDups : ''a list -> ''a list
end