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).
diff --git a/Lib/getpass.py b/Lib/getpass.py
index 8bd7523..d67240e 100644
--- a/Lib/getpass.py
+++ b/Lib/getpass.py
@@ -36,8 +36,7 @@
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 @@
c = msvcrt.getch()
if c == '\r' or c == '\n':
break
+ if c == '\003':
+ raise KeyboardInterrupt
if c == '\b':
pw = pw[:-1]
else: