val _ =
case CommandLine.arguments () of
["vmailpasswd", domain, user] =>
- (case Client.getpass () of
- Client.Passwd oldpasswd =>
- (case Client.getpass () of
- Client.Passwd newpasswd =>
- Main.requestPortalPasswdMailbox {domain = domain,
- user = user,
- oldpasswd = oldpasswd,
- newpasswd = newpasswd}
- | Client.Aborted => die "Aborted"
- | Client.Error => die "New passwords did not match")
- | _ => die "Error entering old password")
+ if (Client.hastty ())
+ then
+ (case Client.getpass () of
+ Client.Passwd oldpasswd =>
+ (case Client.getpass () of
+ Client.Passwd newpasswd =>
+ Main.requestPortalPasswdMailbox {domain = domain,
+ user = user,
+ oldpasswd = oldpasswd,
+ newpasswd = newpasswd}
+ | Client.Aborted => die "Aborted"
+ | Client.Error => die "New passwords did not match")
+ | _ => die "Error entering old password")
+ else
+ let
+ val oldpasswd = TextIO.inputLine TextIO.stdIn
+ val newpasswd = TextIO.inputLine TextIO.stdIn
+ in
+ case (oldpasswd, newpasswd) of
+ (SOME oldpasswd, SOME newpasswd) =>
+ OS.Process.exit (Main.requestPortalPasswdMailbox {domain = domain,
+ user = user,
+ oldpasswd = String.substring (oldpasswd, 0, size oldpasswd - 1),
+ newpasswd = String.substring (newpasswd, 0, size newpasswd - 1)})
+ | _ => die "Invalid input"
+ end
| _ => die "Invalid command-line arguments"