* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*)
-(* Driver for server *)
+(* Driver for configuration requests *)
+
+fun uid () =
+ case Posix.ProcEnv.getenv "DOMTOOL_USER" of
+ NONE => Posix.ProcEnv.getuid ()
+ | SOME user => Posix.SysDB.Passwd.uid (Posix.SysDB.getpwnam user)
fun domtoolRoot () =
let
- val uid = Posix.ProcEnv.getuid ()
- val uname = Posix.SysDB.Passwd.name (Posix.SysDB.getpwuid uid)
- val dname = OS.Path.joinDirFile {dir = Config.homeBase,
- file = uname}
+ val dname = Posix.SysDB.Passwd.home (Posix.SysDB.getpwuid (uid ()))
in
OS.Path.joinDirFile {dir = dname,
- file = "domtool"}
+ file = ".domtool"}
end
-val _ =
+val (doit, doitDir, args) =
case CommandLine.arguments () of
+ "-tc" :: args => (fn fname => (Main.setupUser (); ignore (Main.check fname)),
+ Main.checkDir,
+ args)
+ | args => (Main.request,
+ Main.requestDir,
+ args)
+
+val _ =
+ case args of
[fname] =>
if Posix.FileSys.access (fname, []) then
- Main.request fname
+ doit fname
else
- Main.request (OS.Path.joinDirFile {dir = domtoolRoot (),
- file = fname})
- | [] => Main.requestDir (domtoolRoot ())
+ doit (OS.Path.joinDirFile {dir = domtoolRoot (),
+ file = fname})
+ | [] => doitDir (domtoolRoot ())
| _ => print "Invalid command-line arguments\n"