X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/0868840155aca9662f97318b114a07ae4c8319d6..945262dcc47a5e2fed8c3480f0b34fd9b97a7965:/src/main-vmail.sml diff --git a/src/main-vmail.sml b/src/main-vmail.sml index 63ea19d..2490d02 100644 --- a/src/main-vmail.sml +++ b/src/main-vmail.sml @@ -23,13 +23,36 @@ val _ = [] => print "Invalid command-line arguments\n" | domain :: rest => case rest of - ["add", user, mailbox] => + ["list"] => + (case Main.requestListMailboxes domain of + Vmail.Error msg => (print msg; + print "\n") + | Vmail.Listing users => app (fn {user, mailbox} => (print user; + print "\t"; + print mailbox; + print "\n")) users) + + | ["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] =>