;ς
πό?c           @   sΉ   d  Z  d k l Z d k Z d k Z [ d k Z d d d g Z d Z d Z d Z d Z	 d	   Z
 d
   Z d   Z d   Z d   Z d   Z d   Z e e d  Z e e d  Z d S(   s   Pseudo terminal utilities.(   s   selectNs   openptys   forks   spawni    i   i   c          C   sS   y t  i   SWn t t f j
 o n Xt   \ } }  t |   } | | f Sd S(   sd   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
   slave_names	   master_fds   slave_fd(    (    s    /mit/python/lib/python2.3/pty.pys   openpty    s     c          C   sc   y t  i   \ } } Wn t t f j
 o n( Xt  i |  }  t  i |  | |  f St	   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
   slave_names	   master_fds   slave_fd(    (    s    /mit/python/lib/python2.3/pty.pys   master_open,   s     
c          C   sϊ   y d k  } Wn t j
 o nR Xy" | i t i d d  \ } } Wn! t j
 o } t i	 |  n X| | f Sxt d D]l } xc d D][ } d | | }  y t i |  t i  } Wn t i	 j
 o
 q n X| d | | f Sq Wqz Wt i	 d  d S(	   sl   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   oss   O_RDWRs   tty_names	   master_fds   IOErrors   msgs   errors   xs   ys   pty_names   opens   fd(   s   pty_names   tty_names   sgis   ys   fds   xs   msgs	   master_fd(    (    s    /mit/python/lib/python2.3/pty.pys   _open_terminal<   s*     "
  c         C   s   t  i |  t  i  } y d k l } l } Wn t j
 o | Sn Xy$ | | | d  | | | d  Wn t	 j
 o n X| 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.(   s   ioctls   I_PUSHs   ptems   ldtermN(
   s   oss   opens   tty_names   O_RDWRs   results   fcntls   ioctls   I_PUSHs   ImportErrors   IOError(   s   tty_names   ioctls   results   I_PUSH(    (    s    /mit/python/lib/python2.3/pty.pys
   slave_openS   s     	c          C   s  y t  i   \ }  } Wn t t f j
 o nA X|  t j o( y t  i   Wqg t j
 o qg Xn |  | f St   \ } } t  i   }  |  t j oi t  i   t  i |  t  i | t  t  i | t  t  i | t  | t j o t  i |  qn |  | f Sd S(   sd   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_fd(    (    s    /mit/python/lib/python2.3/pty.pys   forke   s,     	

c         C   s5   x. | d j o  t i |  |  } | | } q Wd S(   s#   Write all the data to a descriptor.s    N(   s   datas   oss   writes   fds   n(   s   fds   datas   n(    (    s    /mit/python/lib/python2.3/pty.pys   _writen   s
      c         C   s   t  i |  d  Sd S(   s   Default read function.i   N(   s   oss   reads   fd(   s   fd(    (    s    /mit/python/lib/python2.3/pty.pys   _read   s     c         C   s   x n o| t  |  t g g  g   \ } } } |  | j o  | |   } t i	 t
 |  n t | j o | t  } t |  |  q q
 Wd S(   s   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   datas   xfds(    (    s    /mit/python/lib/python2.3/pty.pys   _copy   s      !c         C   sτ   t  |   t  d  j o |  f }  n t   \ } } | t j o t i |  d |   n y& t i	 t
  } t i t
  d } Wn t i j
 o d } n Xy t | | |  Wn: t t f j
 o( | o t i t
 t i |  qπ n Xd S(   s   Create a spawned process.s    i    i   N(   s   types   argvs   forks   pids	   master_fds   CHILDs   oss   execlps   ttys	   tcgetattrs   STDIN_FILENOs   modes   setraws   restores   errors   _copys   master_reads
   stdin_reads   IOErrors   OSErrors	   tcsetattrs	   TCSAFLUSH(   s   argvs   master_reads
   stdin_reads   restores   pids   modes	   master_fd(    (    s    /mit/python/lib/python2.3/pty.pys   spawn    s"     
(   s   __doc__s   selects   oss   termioss   ttys   __all__s   STDIN_FILENOs   STDOUT_FILENOs   STDERR_FILENOs   CHILDs   openptys   master_opens   _open_terminals
   slave_opens   forks   _writens   _reads   _copys   spawn(   s   forks   spawns   ttys   master_opens   STDOUT_FILENOs   __all__s   _open_terminals   _reads   openptys   STDERR_FILENOs   termioss   _copys   selects
   slave_opens   CHILDs   oss   _writens   STDIN_FILENO(    (    s    /mit/python/lib/python2.3/pty.pys   ?   s&   									"		