datatype file_action =
Add
- | Delete
+ | Delete of bool (* Set to true to really delete the file *)
| Modify
+ val isDelete : file_action -> bool
+
type file_status = {action : file_action,
domain : string,
dir : string,
val shell : string list -> bool
val shellF : string list * (string -> string) -> unit
+ val shellOutput : string list -> string option
val concatTo : (string -> bool) -> string -> unit
(* Search through the result configuration hierarchy for all files matching
(* 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
+
+ val moveDirCreate : { from : string, to : string } -> unit
end