???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................
]                 @   s   d  d l  m  Z  d  d l Z d  d l Z d d d g Z d  Z d Z d Z d  Z d d   Z d	 d
   Z	 d d   Z
 d d   Z d d   Z d d   Z d d   Z e e d d  Z e e d d  Z d S)    )selectNopenptyforkspawn      c              C   sN   y t  j   SWn t t f k
 r( Yn Xt   \ }  } t |  } |  | f S)N)osr   AttributeErrorOSError_open_terminal
slave_open)	master_fd
slave_nameslave_fd r   (/opt/alt/python35/lib64/python3.5/pty.pyr      s    c              C   s^   y t  j   \ }  } Wn t t f k
 r0 Yn' Xt  j |  } t  j |  |  | f St   S)N)r   r   r	   r
   ttynamecloser   )r   r   r   r   r   r   master_open!   s    
r   c              C   s   xm d D]e }  x\ d D]T } d |  | } y t  j | t  j  } Wn t k
 rX w Yn X| d |  | f SWq Wt d   d  S)NZpqrstuvwxyzPQRSTZ0123456789abcdefz/dev/ptyz/dev/ttyzout of pty devices)r   openO_RDWRr
   )xyZpty_namefdr   r   r   r   1   s    r   c             C   s   t  j |  t  j  } y d d l m } m } Wn t k
 rG | SYn Xy$ | | | d  | | | d  Wn t k
 r Yn X| S)Nr   )ioctlI_PUSHZptemZldterm)r   r   r   Zfcntlr   r   ImportErrorr
   )Ztty_nameresultr   r   r   r   r   r   =   s    	r   c              C   s6  y t  j   \ }  } Wn t t f k
 r0 Yn: X|  t k r` y t  j   Wn t k
 r_ Yn X|  | f St   \ } } t  j   }  |  t k rt  j   t  j |  t  j	 | t
  t  j	 | t  t  j	 | t  | t k r t  j |  t  j t  j t  t  j  } t  j |  n t  j |  |  | f S)N)r   forkptyr	   r
   CHILDsetsidr   r   r   dup2STDIN_FILENOSTDOUT_FILENOSTDERR_FILENOr   r   r   )pidr   r   r   Ztmp_fdr   r   r   r   O   s0    

c             C   s3   x, | r. t  j |  |  } | | d   } q Wd  S)N)r   write)r   datanr   r   r   _writenw   s    	r)   c             C   s   t  j |  d  S)Ni   )r   read)r   r   r   r   _read}   s    r+   c             C   s   |  t  g } x t | g  g   \ } } } |  | k rh | |   } | sX | j |   n t j t |  t  | k r | t   } | s | j t   q t |  |  q Wd  S)N)r"   r   remover   r&   r#   r)   )r   master_read
stdin_readfdsZrfdsZwfdsZxfdsr'   r   r   r   _copy   s    r0   c             C   s   t  |   t  d  k r! |  f }  t   \ } } | t k rP t j |  d |   y& t j t  } t j t  d } Wn t j	 k
 r d } Yn Xy t
 | | |  Wn. t k
 r | r t j t t j |  Yn Xt j |  t j | d  d S)N r   r   )typer   r   r   execlpttyZ	tcgetattrr"   Zsetrawerrorr0   r
   Z	tcsetattrZ	TCSAFLUSHr   waitpid)argvr-   r.   r%   r   modeZrestorer   r   r   r      s$    	
)r   r   r4   __all__r"   r#   r$   r   r   r   r   r   r   r)   r+   r0   r   r   r   r   r   <module>	   s    (