‡Æ
÷Mö9c       sÝ     d  Z   	 d k l Z 
 d k Z d k Z  d k Z  d Z  d Z  d Z  d Z  d „  Z	  d „  Z
 / d „  Z F d	 „  Z N d
 „  Z p d „  Z v d „  Z z e e d „ Z ‰ e e d „ Z d S(   s   Pseudo terminal utilities.(   s   selectNi    i   i   c     sn      y  t  i ƒ  SWn  t t f j
 o
  n X t ƒ  \ }  }  t | ƒ }  |  | f Sd S(   sa   openpty() -> (master_fd, slave_fd)
	Open a pty master/slave pair, using os.openpty() if possible.N(	   s   oss   openptys   AttributeErrors   OSErrors   _open_terminals	   master_fds
   slave_names
   slave_opens   slave_fd(   s	   master_fds
   slave_names   slave_fds    /mit/python/lib/python2.0/pty.pys   openpty s   c     s    " $ y % t  i ƒ  \ }  } Wn & t t f j
 o
 ' n1 X) t  i | ƒ } * t  i | ƒ + |  | f S- t	 ƒ  Sd S(   s•   master_open() -> (master_fd, slave_name)
	Open a pty master and return the fd, and the filename of the slave end.
	Deprecated, use openpty() instead.N(
   s   oss   openptys	   master_fds   slave_fds   AttributeErrors   OSErrors   ttynames
   slave_names   closes   _open_terminal(   s	   master_fds   slave_fds
   slave_names    /mit/python/lib/python2.0/pty.pys   master_open s   c   	  s@  / 1 2 y 3 d k  }  Wn 4 t j
 o
 5 na X7 y% 8 |  i t i d d ƒ \ } } Wn' 9 t j
 o } : t	 i
 | ‚ n X; | | f S< x“ d d < r† } = xz d d = rm } > d | | } ? y @ t	 i | t i ƒ } Wn A t	 i
 j
 o B qµ n XC | d | | f Sqµ Wq  WD t	 i
 d ‚ d S(	   si   Open pty master and return (master_fd, tty_name).
	SGI and generic BSD version, for when openpty() fails.Ni¶  i    s   pqrstuvwxyzPQRSTs   0123456789abcdefs   /dev/ptys   /dev/ttys   out of pty devices(   s   sgis   ImportErrors   _getptys   FCNTLs   O_RDWRs   tty_names	   master_fds   IOErrors   msgs   oss   errors   xs   ys   pty_names   opens   fd(   s   sgis   tty_names	   master_fds   msgs   xs   ys   pty_names   fds    /mit/python/lib/python2.0/pty.pys   _open_terminal/ s*   % 	 	c    s    F J L t  i |  t i ƒ Sd S(   s    slave_open(tty_name) -> slave_fd
	Open the pty slave and acquire the controlling terminal, returning
	opened filedescriptor.
	Deprecated, use openpty() instead.N(   s   oss   opens   tty_names   FCNTLs   O_RDWR(   s   tty_names    /mit/python/lib/python2.0/pty.pys
   slave_openF s   c     sU  N P R y S t  i ƒ  \ }  } Wn T t t f j
 o
 U nS XW |  t j o4 X y Y t  i ƒ  Wn Z t j
 o
 \ n Xn ] |  | f S_ t ƒ  \ } } ` t  i ƒ  }  a |  t j o~ c t  i ƒ  d t  i | ƒ g t  i | t ƒ h t  i | t ƒ i t  i | t ƒ j | t j o k t  i | ƒ n n n |  | f Sd S(   sa   fork() -> (pid, master_fd)
	Fork and make the child a session leader with a controlling terminal.N(   s   oss   forkptys   pids   fds   AttributeErrors   OSErrors   CHILDs   setsids   openptys	   master_fds   slave_fds   forks   closes   dup2s   STDIN_FILENOs   STDOUT_FILENOs   STDERR_FILENO(   s   pids   fds	   master_fds   slave_fds    /mit/python/lib/python2.0/pty.pys   forkN s,   c    sG   p q r x7 r | d j o& s t i |  | ƒ } t | | } q Wd S(   s#   Write all the data to a descriptor.s    N(   s   datas   oss   writes   fds   n(   s   fds   datas   ns    /mit/python/lib/python2.0/pty.pys   _writenp s
    c    s   v w x t  i |  d ƒ Sd S(   s   Default read function.i   N(   s   oss   reads   fd(   s   fds    /mit/python/lib/python2.0/pty.pys   _readv s   c    s¬   z ~  xœ  d o‘ € t  |  t g g  g  ƒ \ } } } ‚ |  | j o& ƒ | |  ƒ } „ t i	 t
 | ƒ n … t | j o# † | t ƒ } ‡ t |  | ƒ n q Wd S(   sy   Parent copy loop.
	Copies  
	  	pty master -> standard output	(master_read)
	  	standard input -> pty master	(stdin_read)i   N(   s   selects	   master_fds   STDIN_FILENOs   rfdss   wfdss   xfdss   master_reads   datas   oss   writes   STDOUT_FILENOs
   stdin_reads   _writen(   s	   master_fds   master_reads
   stdin_reads   rfdss   wfdss   xfdss   datas    /mit/python/lib/python2.0/pty.pys   _copyz s    
$c    sÜ   ‰ Š ‹ t  |  ƒ t  d ƒ j o Œ |  f }  n  t ƒ  \ } } Ž | t j o"  t t i |  d f |  ƒ n  t	 i
 t ƒ } ‘ t	 i t ƒ ’ y “ t | | | ƒ Wn# ” • t	 i t t	 i | ƒ n Xd S(   s   Create a spawned process.s    i    N(   s   types   argvs   forks   pids	   master_fds   CHILDs   applys   oss   execlps   ttys	   tcgetattrs   STDIN_FILENOs   modes   setraws   _copys   master_reads
   stdin_reads	   tcsetattrs	   TCSAFLUSH(   s   argvs   master_reads
   stdin_reads   pids	   master_fds   modes    /mit/python/lib/python2.0/pty.pys   spawn‰ s   "(   s   __doc__s   selects   oss   FCNTLs   ttys   STDIN_FILENOs   STDOUT_FILENOs   STDERR_FILENOs   CHILDs   openptys   master_opens   _open_terminals
   slave_opens   forks   _writens   _reads   _copys   spawn(    s    /mit/python/lib/python2.0/pty.pys   ? s    				"