structure SM = DataStructures.StringMap
-val aliases : TextIO.outstream SM.map ref = ref SM.empty
+val aliases : Domain.files SM.map ref = ref SM.empty
fun aliasesF node = valOf (SM.find (!aliases, node))
-val aliasesD : TextIO.outstream SM.map ref = ref SM.empty
+val aliasesD : Domain.files SM.map ref = ref SM.empty
fun aliasesDF node = valOf (SM.find (!aliasesD, node))
fun write nodes =
let
val files = map (fn node => aliasesF node) nodes
in
- fn s => app (fn file => TextIO.output (file, s)) files
+ (fn s => app (fn file => #write file s) files,
+ fn () => app (fn file => #writeDom file ()) files)
end
fun writeD nodes =
let
val files = map (fn node => aliasesDF node) nodes
in
- fn s => app (fn file => TextIO.output (file, s)) files
+ (fn s => app (fn file => #write file s) files,
+ fn () => app (fn file => #writeDom file ()) files)
end
fun openInAll base = foldl (fn (node, r) =>
SM.insert (r,
node,
- Domain.domainFile {node = node, name = base}))
+ Domain.domainsFile {node = node, name = base}))
SM.empty Domain.nodes
val _ = Domain.registerBefore
aliasesD := openInAll "aliases.default"))
val _ = Domain.registerAfter
- (fn _ => (SM.app TextIO.closeOut (!aliases);
- SM.app TextIO.closeOut (!aliasesD)))
+ (fn _ => (SM.app (fn file => #close file ()) (!aliases);
+ SM.app (fn file => #close file ()) (!aliasesD)))
fun validEmailUser s =
size s > 0 andalso size s < 50
let
val nodes = Env.env (Env.list Env.string) (env, "MailNodes")
- val write = write nodes
- val writeD = writeD nodes
+ val (write, writeDom) = write nodes
+ val (writeD, writeDomD) = writeD nodes
fun writeTarget (writer, t) =
case t of
case s of
User s => (write s;
write "@";
- write (Domain.currentDomain ());
+ writeDom ();
write ": ";
writeTarget (write, t);
write "\n")
| Default => (write "*@";
- write (Domain.currentDomain ());
+ writeDom ();
write ": ";
writeTarget (write, t);
write "\n")
| CatchAll => (writeD "*@";
- writeD (Domain.currentDomain ());
+ writeDomD ();
writeD ": ";
writeTarget (writeD, t);
writeD "\n")