* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-*)
+ *)
(* Domain-related primitive actions *)
end
val current = ref ""
+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
val _ = Env.registerContainer ("domain",
fn (_, [(EString dom, _)]) => (current := dom;
+ currentPath := getPath dom;
!befores dom;
StringMap.empty)
| _ => Env.badArgs "domain",