]> granicus.if.org Git - python/commitdiff
Don't use raw_input() to ask for the password; this puts the password
authorGuido van Rossum <guido@python.org>
Tue, 28 Jul 1998 19:28:43 +0000 (19:28 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 28 Jul 1998 19:28:43 +0000 (19:28 +0000)
in the GNU readline history buffer which is not such a great idea.

Lib/getpass.py

index d67240eaf8aaecd19359383a2b5cb36b5a551912..be7a2f9049b769aa51148088b0410f505ed8b228 100644 (file)
@@ -36,7 +36,7 @@ def getpass(prompt='Password: '):
        new[3] = new[3] & ~TERMIOS.ECHO # 3 == 'lflags'
        try:
                termios.tcsetattr(fd, TERMIOS.TCSADRAIN, new)
-               passwd = raw_input(prompt)
+               passwd = _raw_input(prompt)
        finally:
                termios.tcsetattr(fd, TERMIOS.TCSADRAIN, old)
 
@@ -66,7 +66,22 @@ def win_getpass(prompt='Password: '):
 
 
 def default_getpass(prompt='Password: '):
-       return raw_input(prompt)
+       return _raw_input(prompt)
+
+
+def _raw_input(prompt=""):
+       # A raw_input() replacement that doesn't save the string in the
+       # GNU readline history.
+       import sys
+       prompt = str(prompt)
+       if prompt:
+               sys.stdout.write(prompt)
+       line = sys.stdin.readline()
+       if not line:
+               raise EOFError
+       if line[-1] == '\n':
+               line = line[:-1]
+       return line
 
 
 def getuser():