Catch-all aliases working again
[hcoop/domtool2.git] / src / main-client.sml
index d6fe010..8d5f012 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  *)
 
-(* Driver for server *)
+(* Driver for configuration requests *)
 
-val _ =
+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 dname = Posix.SysDB.Passwd.home (Posix.SysDB.getpwuid (uid ()))
+    in
+       OS.Path.joinDirFile {dir = dname,
+                            file = ".domtool"}
+    end
+
+val (doit, doitDir, args) =
     case CommandLine.arguments () of
-       [fname] => Main.request fname
+       "-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
+           doit fname
+       else
+           doit (OS.Path.joinDirFile {dir = domtoolRoot (),
+                                      file = fname})
+      | [] => doitDir (domtoolRoot ())
       | _ => print "Invalid command-line arguments\n"