Don't catch interrupts in getpass() -- the finally clause will reset

the tty and the caller can deal with the interrupt.

In the windows version, recognize ^C and raise KeyboardInterrupt (not
sure if this is needed, but can't hurt).
This commit is contained in:
Guido van Rossum 1998-06-12 14:28:38 +00:00
parent e7c4193755
commit c3da02e904
1 changed files with 3 additions and 2 deletions

View File

@ -36,8 +36,7 @@ def getpass(prompt='Password: '):
new[3] = new[3] & ~TERMIOS.ECHO # 3 == 'lflags'
try:
termios.tcsetattr(fd, TERMIOS.TCSADRAIN, new)
try: passwd = raw_input(prompt)
except KeyboardInterrupt: passwd = None
passwd = raw_input(prompt)
finally:
termios.tcsetattr(fd, TERMIOS.TCSADRAIN, old)
@ -55,6 +54,8 @@ def win_getpass(prompt='Password: '):
c = msvcrt.getch()
if c == '\r' or c == '\n':
break
if c == '\003':
raise KeyboardInterrupt
if c == '\b':
pw = pw[:-1]
else: