X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/edf5dcbb8691753a607241508652acd680897949..9a34b0017d95d8ff3563a0afa583c92e6356ad6f:/src/main.sml?ds=sidebyside diff --git a/src/main.sml b/src/main.sml index 62af91b..4836ed8 100644 --- a/src/main.sml +++ b/src/main.sml @@ -251,21 +251,37 @@ fun requestSlaveBio' printErr = fun requestSlaveBio () = requestSlaveBio' true -fun request fname = +fun request (fname, libOpt) = let - val (user, bio) = requestBio (fn () => ignore (check (basis ()) fname)) - - val inf = TextIO.openIn fname + val (user, bio) = requestBio (fn () => + let + val env = basis () + val env = case libOpt of + NONE => env + | SOME lib => #1 (check env lib) + in + ignore (check env fname) + end) + + fun readFile fname = + let + val inf = TextIO.openIn fname - fun loop lines = - case TextIO.inputLine inf of - NONE => String.concat (List.rev lines) - | SOME line => loop (line :: lines) + fun loop lines = + case TextIO.inputLine inf of + NONE => String.concat (rev lines) + | SOME line => loop (line :: lines) + in + loop [] + before TextIO.closeIn inf + end - val code = loop [] + val code = readFile fname + val msg = case libOpt of + NONE => MsgConfig code + | SOME fname' => MsgMultiConfig [readFile fname', code] in - TextIO.closeIn inf; - Msg.send (bio, MsgConfig code); + Msg.send (bio, msg); case Msg.recv bio of NONE => print "Server closed connection unexpectedly.\n" | SOME m =>