vmail interprets relative paths relatively to caller's home directory
[hcoop/domtool2.git] / src / main-vmail.sml
index 8acb845..2490d02 100644 (file)
@@ -35,10 +35,24 @@ val _ =
          | ["add", user, mailbox] =>
            (case Client.getpass () of
                 Client.Passwd passwd =>
          | ["add", user, mailbox] =>
            (case Client.getpass () of
                 Client.Passwd passwd =>
-                Main.requestNewMailbox {domain = domain,
-                                        user = user,
-                                        passwd = passwd,
-                                        mailbox = mailbox}
+                let
+                    val mailbox = if size mailbox > 0
+                                     andalso String.sub (mailbox, 0) <> #"/" then
+                                      let
+                                          val uid = Posix.ProcEnv.getuid ()
+                                          val user = Posix.SysDB.getpwuid uid
+                                          val home = Posix.SysDB.Passwd.home user
+                                      in
+                                          home ^ "/" ^ mailbox
+                                      end
+                                  else
+                                      mailbox
+                in
+                    Main.requestNewMailbox {domain = domain,
+                                            user = user,
+                                            passwd = passwd,
+                                            mailbox = mailbox}
+                end
               | _ => ())
 
          | ["passwd", user] =>
               | _ => ())
 
          | ["passwd", user] =>