+val currentPath = ref ""
+
+fun currentDomain () = !current
+
+fun domainFile name = TextIO.openOut (!currentPath ^ name)
+
+fun getPath domain =
+ let
+ val toks = String.fields (fn ch => ch = #".") domain
+
+ val elems = foldr (fn (piece, elems) =>
+ let
+ val elems = piece :: elems
+ val path = String.concatWith "/" (Config.configRoot :: rev elems)
+ in
+ (if Posix.FileSys.ST.isDir
+ (Posix.FileSys.stat path) then
+ ()
+ else
+ (OS.FileSys.remove path;
+ OS.FileSys.mkDir path))
+ handle OS.SysErr _ => OS.FileSys.mkDir path;
+ elems
+ end) [] toks
+ in
+ String.concatWith "/" (Config.configRoot :: rev elems)
+ end