Make 'domtool -tc' (no other arguments) work properly
[hcoop/domtool2.git] / src / main-client.sml
index 1aa1a0f..8d5f012 100644 (file)
 
 (* 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 dname = Posix.SysDB.Passwd.home (Posix.SysDB.getpwuid uid)
+       val dname = Posix.SysDB.Passwd.home (Posix.SysDB.getpwuid (uid ()))
     in
        OS.Path.joinDirFile {dir = dname,
                             file = ".domtool"}
     end
 
-val (doit, args) =
+val (doit, doitDir, args) =
     case CommandLine.arguments () of
-       "-tc" :: args => (fn fname => (Main.setupUser (); ignore (Main.check fname)), args)
-      | args => (Main.request, args)
+       "-tc" :: args => (fn fname => (Main.setupUser (); ignore (Main.check fname)),
+                         Main.checkDir,
+                         args)
+      | args => (Main.request,
+                Main.requestDir,
+                args)
 
 val _ =
     case args of
@@ -40,5 +48,5 @@ val _ =
        else
            doit (OS.Path.joinDirFile {dir = domtoolRoot (),
                                       file = fname})
-      | [] => Main.requestDir (domtoolRoot ())
+      | [] => doitDir (domtoolRoot ())
       | _ => print "Invalid command-line arguments\n"