-fun writeTarget (outf, t) =
- case t of
- Address s => TextIO.output (outf, localhostify s)
- | Addresses [] => TextIO.output (outf, "!")
- | Addresses ss => TextIO.output (outf, String.concatWith "," (map localhostify ss))
- | Drop => TextIO.output (outf, "!")
-
-fun writeSource (s, t) =
- case s of
- User s => (write s;
- write "@";
- write (Domain.currentDomain ());
- write ": ";
- writeTarget (aliasesF (), t);
- write "\n")
- | Default => (write "*@";
- write (Domain.currentDomain ());
- write ": ";
- writeTarget (aliasesF (), t);
- write "\n")
- | CatchAll => (writeD "*@";
- writeD (Domain.currentDomain ());
- writeD ": ";
- writeTarget (aliasesDF (), t);
- writeD "\n")
-
-val _ = Env.action_two "aliasPrim"
- ("from", source, "to", target)
- writeSource
+fun writeSource (env, s, t) =
+ let
+ val nodes = Env.env (Env.list Env.string) (env, "MailNodes")
+
+ val write = write nodes
+ val writeD = writeD nodes
+
+ fun writeTarget (writer, t) =
+ case t of
+ Address s => writer (localhostify s)
+ | Addresses [] => writer "!"
+ | Addresses ss => writer (String.concatWith "," (map localhostify ss))
+ | Drop => writer "!"
+ in
+ case s of
+ User s => (write s;
+ write "@";
+ write (Domain.currentDomain ());
+ write ": ";
+ writeTarget (write, t);
+ write "\n")
+ | Default => (write "*@";
+ write (Domain.currentDomain ());
+ write ": ";
+ writeTarget (write, t);
+ write "\n")
+ | CatchAll => (writeD "*@";
+ writeD (Domain.currentDomain ());
+ writeD ": ";
+ writeTarget (writeD, t);
+ writeD "\n")
+ end
+
+val _ = Env.actionV_two "aliasPrim"
+ ("from", source, "to", target)
+ writeSource