fun getpass () =
let
val tty = Posix.FileSys.stdin
- val termios = Posix.TTY.TC.getattr tty
+ val termios = Compat.getattr tty
val fields = Posix.TTY.fieldsOf termios
val termios' = Posix.TTY.termios {iflag = #iflag fields,
ispeed = #ispeed fields,
ospeed = #ospeed fields}
- fun reset () = Posix.TTY.TC.setattr (tty, Posix.TTY.TC.sanow, termios)
+ fun reset () = Compat.setattr (tty, Posix.TTY.TC.sanow, termios)
in
print " Password: ";
TextIO.flushOut TextIO.stdOut;
- Posix.TTY.TC.setattr (tty, Posix.TTY.TC.sanow, termios');
+ Compat.setattr (tty, Posix.TTY.TC.sanow, termios');
case TextIO.inputLine TextIO.stdIn of
NONE => (reset ();
Aborted)
signature COMPAT = sig
structure Char : WORD
+
+ val getattr : Posix.TTY.file_desc -> Posix.TTY.termios
+ val setattr : Posix.TTY.file_desc * Posix.TTY.TC.set_action * Posix.TTY.termios -> unit
end
structure Compat : COMPAT = struct
structure Char = MLRep.Char.Unsigned
+
+ val getattr = Posix.TTY.TC.getattr
+ val setattr = Posix.TTY.TC.setattr
end
val _ = let
structure Compat : COMPAT = struct
structure Char = Word32
+
+ val getattr = Posix.TTY.getattr
+ val setattr = Posix.TTY.setattr
end
fun add {domain, requester, user, passwd, mailbox} =
let
val udb = Posix.SysDB.getpwnam requester
- val uid = Word.toInt (Posix.ProcEnv.uidToWord (Posix.SysDB.Passwd.uid udb))
- val gid = Word.toInt (Posix.ProcEnv.gidToWord (Posix.SysDB.Passwd.gid udb))
+ val uid = SysWord.toInt (Posix.ProcEnv.uidToWord (Posix.SysDB.Passwd.uid udb))
+ val gid = SysWord.toInt (Posix.ProcEnv.gidToWord (Posix.SysDB.Passwd.gid udb))
val home = Posix.SysDB.Passwd.home udb
in
if mailboxExists {domain = domain, user = user} then