home *** CD-ROM | disk | FTP | other *** search
/ Freelog 116 / FreelogNo116-JuilletSeptembre2013.iso / GestionFichiers / metamorphose / metamorphose2_0.8.2_setup.exe / metamorphose2.exe / getpass.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2011-01-12  |  3KB  |  163 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. import os
  5. import sys
  6. import warnings
  7. __all__ = [
  8.     'getpass',
  9.     'getuser',
  10.     'GetPassWarning']
  11.  
  12. class GetPassWarning(UserWarning):
  13.     pass
  14.  
  15.  
  16. def unix_getpass(prompt = 'Password: ', stream = None):
  17.     fd = None
  18.     tty = None
  19.     
  20.     try:
  21.         fd = os.open('/dev/tty', os.O_RDWR | os.O_NOCTTY)
  22.         tty = os.fdopen(fd, 'w+', 1)
  23.         input = tty
  24.         if not stream:
  25.             stream = tty
  26.     except EnvironmentError:
  27.         e = None
  28.         
  29.         try:
  30.             fd = sys.stdin.fileno()
  31.         except:
  32.             passwd = fallback_getpass(prompt, stream)
  33.  
  34.         input = sys.stdin
  35.         if not stream:
  36.             stream = sys.stderr
  37.         
  38.     except:
  39.         stream
  40.  
  41.     if fd is not None:
  42.         passwd = None
  43.         
  44.         try:
  45.             old = termios.tcgetattr(fd)
  46.             new = old[:]
  47.             new[3] &= ~(termios.ECHO | termios.ISIG)
  48.             tcsetattr_flags = termios.TCSAFLUSH
  49.             if hasattr(termios, 'TCSASOFT'):
  50.                 tcsetattr_flags |= termios.TCSASOFT
  51.             
  52.             
  53.             try:
  54.                 termios.tcsetattr(fd, tcsetattr_flags, new)
  55.                 passwd = _raw_input(prompt, stream, input = input)
  56.             finally:
  57.                 termios.tcsetattr(fd, tcsetattr_flags, old)
  58.                 stream.flush()
  59.  
  60.         except termios.error:
  61.             e = None
  62.             if passwd is not None:
  63.                 raise 
  64.             passwd is not None
  65.             del input
  66.             del tty
  67.             passwd = fallback_getpass(prompt, stream)
  68.         except:
  69.             None<EXCEPTION MATCH>termios.error
  70.         
  71.  
  72.     None<EXCEPTION MATCH>termios.error
  73.     stream.write('\n')
  74.     return passwd
  75.  
  76.  
  77. def win_getpass(prompt = 'Password: ', stream = None):
  78.     if sys.stdin is not sys.__stdin__:
  79.         return fallback_getpass(prompt, stream)
  80.     import msvcrt as msvcrt
  81.     for c in prompt:
  82.         msvcrt.putch(c)
  83.     
  84.     pw = ''
  85.     while None:
  86.         c = msvcrt.getch()
  87.         if c == '\r' or c == '\n':
  88.             break
  89.         
  90.         if c == '\x03':
  91.             raise KeyboardInterrupt
  92.         if c == '\x08':
  93.             pw = pw[:-1]
  94.             continue
  95.         pw = pw + c
  96.         continue
  97.         msvcrt.putch('\r')
  98.         msvcrt.putch('\n')
  99.         return pw
  100.  
  101.  
  102. def fallback_getpass(prompt = 'Password: ', stream = None):
  103.     warnings.warn('Can not control echo on the terminal.', GetPassWarning, stacklevel = 2)
  104.     if not stream:
  105.         stream = sys.stderr
  106.     
  107.     print >>stream, 'Warning: Password input may be echoed.'
  108.     return _raw_input(prompt, stream)
  109.  
  110.  
  111. def _raw_input(prompt = '', stream = None, input = None):
  112.     if not stream:
  113.         stream = sys.stderr
  114.     
  115.     if not input:
  116.         input = sys.stdin
  117.     
  118.     prompt = str(prompt)
  119.     if prompt:
  120.         stream.write(prompt)
  121.         stream.flush()
  122.     
  123.     line = input.readline()
  124.     if not line:
  125.         raise EOFError
  126.     line
  127.     if line[-1] == '\n':
  128.         line = line[:-1]
  129.     
  130.     return line
  131.  
  132.  
  133. def getuser():
  134.     import os
  135.     for name in ('LOGNAME', 'USER', 'LNAME', 'USERNAME'):
  136.         user = os.environ.get(name)
  137.         if user:
  138.             return user
  139.     
  140.     import pwd as pwd
  141.     return pwd.getpwuid(os.getuid())[0]
  142.  
  143.  
  144. try:
  145.     import termios
  146.     (termios.tcgetattr, termios.tcsetattr)
  147. except (ImportError, AttributeError):
  148.     
  149.     try:
  150.         import msvcrt
  151.     except ImportError:
  152.         
  153.         try:
  154.             from EasyDialogs import AskPassword
  155.         except ImportError:
  156.             getpass = fallback_getpass
  157.  
  158.         getpass = AskPassword
  159.  
  160.     getpass = win_getpass
  161.  
  162. getpass = unix_getpass
  163.