ó
{õHc           @   s•  d  d l  Z  e  j d k Z d  d l Z d  d l Z d  d l Z d  d l Z d e f d „  ƒ  YZ e r² d  d l	 Z	 d  d l
 Z
 d  d l Td d d „  ƒ  YZ d d d	 „  ƒ  YZ n0 d  d l Z d  d l Z d  d l Z d  d l Z d
 d d d d d g Z y e j d ƒ Z Wn d Z n Xy e Wn e k
 rDd Z d Z n Xg  Z d „  Z d  Z d Z d „  Z d „  Z d „  Z d
 e f d „  ƒ  YZ  d S(   iÿÿÿÿNt   win32t   CalledProcessErrorc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   | |  _  | |  _ d  S(   N(   t
   returncodet   cmd(   t   selfR   R   (    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyt   __init__   s    	c         C   s   d |  j  |  j f S(   Ns-   Command '%s' returned non-zero exit status %d(   R   R   (   R   (    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyt   __str__   s    (   t   __name__t
   __module__R   R   (    (    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyR   
   s   	(   t   *t   STARTUPINFOc           B   s&   e  Z d  Z d Z d Z d Z d  Z RS(   i    N(   R   R   t   dwFlagst   Nonet	   hStdInputt
   hStdOutputt	   hStdErrort   wShowWindow(    (    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyR
      s
   t
   pywintypesc           B   s   e  Z e Z RS(    (   R   R   t   IOErrort   error(    (    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyR   #   s   t   Popent   PIPEt   STDOUTt   callt
   check_callt   SC_OPEN_MAXi   i    i   c          C   sY   xR t  D]I }  |  j d t j ƒ d k r y t  j |  ƒ WqQ t k
 rM qQ Xq q Wd  S(   Nt
   _deadstatei    (   t   _activet   pollt   syst   maxintt   removet
   ValueError(   t   inst(    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyt   _cleanup5   s    iþÿÿÿc          O   s   t  |  | Ž  j ƒ  S(   N(   R   t   wait(   t	   popenargst   kwargs(    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyR   >   s    c          O   sS   t  |  | Ž  } | j d ƒ } | d  k r7 |  d } n  | rO t | | ƒ ‚ n  | S(   Nt   argsi    (   R   t   getR   R   (   R$   R%   t   retcodeR   (    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyR   @   s    c         C   sL  g  } t  } x0|  D](} g  } | r5 | j d ƒ n  d | k pV d | k pV | d k } | ro | j d ƒ n  x | D]ˆ } | d k r˜ | j | ƒ qv | d k rÕ | j d t | ƒ d ƒ g  } | j d ƒ qv | rñ | j | ƒ g  } n  | j | ƒ qv W| r| j | ƒ n  | r | j | ƒ | j d ƒ q q Wd j | ƒ S(   Nt    s   	t    t   "s   \i   s   \"(   t   Falset   appendt   lent   extendt   join(   t   seqt   resultt	   needquotet   argt   bs_buft   c(    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyt   list2cmdlineH   s4    $	c           B   sø   e  Z d  d d d d d e e d d e d d  d „ Z d „  Z e d „ Z d d „ Z e	 r« d „  Z
 d „  Z d „  Z d „  Z d d	 „ Z d
 „  Z d „  Z d „  Z nK d „  Z
 d „  Z d „  Z d „  Z d „  Z d d „ Z d „  Z d „  Z RS(   i    c         C   sv  t  ƒ  t |  _ t | t t f ƒ s4 t d ƒ ‚ n  t rm | d  k	 rU t	 d ƒ ‚ n  | r£ t	 d ƒ ‚ q£ n6 | d  k	 rˆ t	 d ƒ ‚ n  | d k r£ t	 d ƒ ‚ n  d  |  _
 d  |  _ d  |  _ d  |  _ d  |  _ | |  _ |  j | | | ƒ \ } } } } } } |  j | | | | |
 | | | | |	 | | | | | | ƒ t rÍ| d  k rn| d  k	 rnt j | ƒ d  } n  | d  k rœ| d  k	 rœt j | ƒ d  } n  | d  k rÍ| d  k	 rÍt j | ƒ d  } qÍn  | rît j | d | ƒ |  _
 n  | r0| rt j | d | ƒ |  _ q0t j | d	 | ƒ |  _ n  | rr| rWt j | d | ƒ |  _ qrt j | d	 | ƒ |  _ n  d  S(
   Ns   bufsize must be an integers0   preexec_fn is not supported on Windows platformss/   close_fds is not supported on Windows platformss2   startupinfo is only supported on Windows platformsi    s4   creationflags is only supported on Windows platformst   wbt   rUt   rb(   R"   R,   t   _child_createdt
   isinstancet   intt   longt	   TypeErrort	   mswindowsR   R    t   stdint   stdoutt   stderrt   pidR   t   universal_newlinest   _get_handlest   _execute_childt   ost   closet   fdopen(   R   R&   t   bufsizet
   executableRA   RB   RC   t
   preexec_fnt	   close_fdst   shellt   cwdt   envRE   t   startupinfot   creationflagst   p2creadt   p2cwritet   c2preadt   c2pwritet   errreadt   errwrite(    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyR   e   sR    							':		c         C   s(   | j  d d ƒ } | j  d d ƒ } | S(   Ns   
s   
s   (   t   replace(   R   t   data(    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyt   _translate_newlines’   s    c         C   sO   |  j  s d  S|  j d | j ƒ |  j d  k rK t d  k	 rK t j |  ƒ n  d  S(   NR   (   R;   R   R   R   R   R   R-   (   R   R   (    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyt   __del__–   s
    	c         C   s¼   |  j  |  j |  j g j d  ƒ d k r¯ d  } d  } |  j  re | rU |  j  j | ƒ n  |  j  j ƒ  n6 |  j r€ |  j j ƒ  } n |  j r› |  j j ƒ  } n  |  j ƒ  | | f S|  j	 | ƒ S(   Ni   (
   RA   RB   RC   t   countR   t   writeRI   t   readR#   t   _communicate(   R   t   inputRB   RC   (    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyt   communicateœ   s    '			

c   
      C   s®  | d  k r( | d  k r( | d  k r( d Sd \ } } d \ } } d \ } }	 | d  k rg t t ƒ } n  | d  k	 rv n„ | d  k sŽ | t k rÄ t d  d ƒ \ } } | j ƒ  } t j | d ƒ } n6 t | t	 ƒ rå t j
 | ƒ } n t j
 | j ƒ  ƒ } |  j | ƒ } | d  k r$t t ƒ } n  | d  k	 r3n„ | d  k sK| t k rt d  d ƒ \ } } | j ƒ  } t j | d ƒ } n6 t | t	 ƒ r¢t j
 | ƒ } n t j
 | j ƒ  ƒ } |  j | ƒ } | d  k rát t ƒ }	 n  |	 d  k	 rðn™ | d  k s| t k r>t d  d ƒ \ } }	 | j ƒ  } t j | d ƒ } nK | t k rS| }	 n6 t | t	 ƒ rtt j
 | ƒ }	 n t j
 | j ƒ  ƒ }	 |  j |	 ƒ }	 | | | | | |	 f S(   Ni    (   NNNNNN(   NN(   NN(   NN(   R   t   GetStdHandlet   STD_INPUT_HANDLER   t
   CreatePipet   Detacht   msvcrtt   open_osfhandleR<   R=   t   get_osfhandlet   filenot   _make_inheritablet   STD_OUTPUT_HANDLEt   STD_ERROR_HANDLER   (
   R   RA   RB   RC   RT   RU   RV   RW   RX   RY   (    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyRF   ¬   sX    $	c         C   s   t  t ƒ  | t ƒ  d d t ƒ S(   Ni    i   (   t   DuplicateHandlet   GetCurrentProcesst   DUPLICATE_SAME_ACCESS(   R   t   handle(    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyRl   Ü   s    c         C   s…   t  j j t  j j t d ƒ ƒ d ƒ } t  j j | ƒ s t  j j t  j j t j ƒ d ƒ } t  j j | ƒ s t d ƒ ‚ q n  | S(   Ni    s   w9xpopen.exesZ   Cannot locate w9xpopen.exe, which is needed for Popen to work with your shell or platform.(	   RH   t   pathR0   t   dirnamet   GetModuleFileNamet   existsR   t   exec_prefixt   RuntimeError(   R   t   w9xpopen(    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyt   _find_w9xpopenÞ   s    '$c         C   så  t  | t j ƒ s! t | ƒ } n  | d  k r9 t ƒ  } n  d  | | | f k r{ | j t O_ | | _ | | _	 | | _
 n  |
 r| j t O_ t | _ t j j d d ƒ } | d | } t ƒ  d k sé t j j | ƒ j ƒ  d k r|  j ƒ  } d | | f } |	 t O}	 qn  y4 t | | d  d  d |	 | | | ƒ	 \ } } } } Wn% t j k
 rp} t | j Œ  ‚ n Xt |  _ | |  _ | |  _ | j  ƒ  | d  k	 r¯| j  ƒ  n  | d  k	 rÈ| j  ƒ  n  | d  k	 rá| j  ƒ  n  d  S(   Nt   COMSPECs   cmd.exes    /c l        s   command.coms   "%s" %si   (!   R<   t   typest   StringTypesR7   R   R
   R   t   STARTF_USESTDHANDLESR   R   R   t   STARTF_USESHOWWINDOWt   SW_HIDER   RH   t   environR'   t
   GetVersionRs   t   basenamet   lowerRz   t   CREATE_NEW_CONSOLEt   CreateProcessR   R   t   WindowsErrorR&   t   TrueR;   t   _handleRD   t   Close(   R   R&   RL   RM   RN   RP   RQ   RE   RR   RS   RO   RT   RU   RV   RW   RX   RY   t   comspecRy   t   hpt   htRD   t   tidt   e(    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyRG   å   s@    			-4			
c         C   sF   |  j  d  k r? t |  j d ƒ t k r? t |  j ƒ |  _  q? n  |  j  S(   Ni    (   R   R   t   WaitForSingleObjectR‰   t   WAIT_OBJECT_0t   GetExitCodeProcess(   R   R   (    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyR     s    c         C   s=   |  j  d  k r6 t |  j t ƒ } t |  j ƒ |  _  n  |  j  S(   N(   R   R   R   R‰   t   INFINITER’   (   R   t   obj(    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyR#     s    c         C   s   | j  | j ƒ  ƒ d  S(   N(   R-   R`   (   R   t   fht   buffer(    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyt   _readerthread  s    c         C   s›  d  } d  } |  j rY g  } t j d |  j d |  j | f ƒ } | j t ƒ | j ƒ  n  |  j r¦ g  } t j d |  j d |  j | f ƒ } | j t ƒ | j ƒ  n  |  j	 rÞ | d  k	 rÎ |  j	 j
 | ƒ n  |  j	 j ƒ  n  |  j rô | j ƒ  n  |  j r
| j ƒ  n  | d  k	 r#| d } n  | d  k	 r<| d } n  |  j r‡t t d ƒ r‡| rl|  j | ƒ } n  | r‡|  j | ƒ } q‡n  |  j ƒ  | | f S(   Nt   targetR&   i    t   newlines(   R   RB   t	   threadingt   ThreadR—   t	   setDaemonRˆ   t   startRC   RA   R_   RI   R0   RE   t   hasattrt   fileR\   R#   (   R   Rb   RB   RC   t   stdout_threadt   stderr_thread(    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyRa     s>    	$	$			
c   
      C   sK  d \ } } d \ } } d \ } }	 | d  k r3 nE | t k rT t j ƒ  \ } } n$ t | t ƒ rl | } n | j ƒ  } | d  k r‡ nE | t k r¨ t j ƒ  \ } } n$ t | t ƒ rÀ | } n | j ƒ  } | d  k rÛ nZ | t k rü t j ƒ  \ } }	 n9 | t k r| }	 n$ t | t ƒ r)| }	 n | j ƒ  }	 | | | | | |	 f S(   N(   NN(   NN(   NN(   R   R   RH   t   pipeR<   R=   Rk   R   (
   R   RA   RB   RC   RT   RU   RV   RW   RX   RY   (    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyRF   3  s6    				c         C   sZ   y t  j } Wn t k
 r& d } n Xt  j  | t  j ƒ } t  j  | t  j | | Bƒ d  S(   Ni   (   t   fcntlt
   FD_CLOEXECt   AttributeErrort   F_GETFDt   F_SETFD(   R   t   fdt   cloexec_flagt   old(    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyt   _set_cloexec_flagR  s    
c         C   sK   xD t  d t ƒ D]3 } | | k r( q n  y t j | ƒ Wq q Xq Wd  S(   Ni   (   t   xranget   MAXFDRH   RI   (   R   t   butt   i(    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyt
   _close_fdsY  s    c      	   C   s¦  t  | t j ƒ r | g } n t | ƒ } |
 rC d d g | } n  | d  k r\ | d } n  t j ƒ  \ } } |  j | ƒ t j	 ƒ  } t j
 ƒ  y t j ƒ  |  _ Wn | r½ t j ƒ  n  ‚  n Xt |  _ |  j d k rØy| rõ t j | ƒ n  | rt j | ƒ n  | r!t j | ƒ n  t j | ƒ | rGt j | d ƒ n  | r`t j | d ƒ n  | ryt j | d ƒ n  | r›| d
 k r›t j | ƒ n  | rÃ| | d f k rÃt j | ƒ n  | rî| | | d f k rît j | ƒ n  | r|  j d | ƒ n  | d  k	 r#t j | ƒ n  | r6t | ƒ n  | d  k rUt j | | ƒ n t j | | | ƒ Wn\ t j ƒ  \ } } } t j | | | ƒ } d j | ƒ | _ t j | t j | ƒ ƒ n Xt j  d ƒ n  | rët j ƒ  n  t j | ƒ | r| rt j | ƒ n  | r0| r0t j | ƒ n  | rL| rLt j | ƒ n  t j! | d	 ƒ } t j | ƒ | d k r¢t j" |  j d ƒ t j# | ƒ } | ‚ n  d  S(   Ns   /bin/shs   -ci    i   i   R®   R*   iÿ   i   (   i    ($   R<   R|   R}   t   listR   RH   R¢   R«   t   gct	   isenabledt   disablet   forkRD   t   enableRˆ   R;   RI   t   dup2R°   t   chdirt   applyt   execvpt   execvpeR   t   exc_infot	   tracebackt   format_exceptionR0   t   child_tracebackR_   t   picklet   dumpst   _exitR`   t   waitpidt   loads(   R   R&   RL   RM   RN   RP   RQ   RE   RR   RS   RO   RT   RU   RV   RW   RX   RY   t   errpipe_readt   errpipe_writet   gc_was_enabledt   exc_typet	   exc_valuet   tbt	   exc_linesR[   t   child_exception(    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyRG   a  sŠ    
	c         C   sY   t  j | ƒ r% t  j | ƒ |  _ n0 t  j | ƒ rI t  j | ƒ |  _ n t d ƒ ‚ d  S(   Ns   Unknown child exit status!(   RH   t   WIFSIGNALEDt   WTERMSIGR   t	   WIFEXITEDt   WEXITSTATUSRx   (   R   t   sts(    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyt   _handle_exitstatus©  s
    c         C   s‰   |  j  d  k r‚ yA t j |  j t j ƒ \ } } | |  j k rO |  j | ƒ n  Wq‚ t j k
 r~ | d  k	 r | |  _  q q‚ Xn  |  j  S(   N(   R   R   RH   RÃ   RD   t   WNOHANGRÒ   R   (   R   R   RD   RÑ   (    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyR   °  s    c         C   sA   |  j  d  k r: t j |  j d ƒ \ } } |  j | ƒ n  |  j  S(   Ni    (   R   R   RH   RÃ   RD   RÒ   (   R   RD   RÑ   (    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyR#   º  s    c         C   s®  g  } g  } d  } d  } |  j rW |  j j ƒ  | rG | j |  j ƒ qW |  j j ƒ  n  |  j ry | j |  j ƒ g  } n  |  j r› | j |  j ƒ g  } n  d } xo| s° | rt j | | g  ƒ \ } } }	 |  j | k rCt j	 |  j j
 ƒ  t | | d ƒ ƒ }
 | |
 7} | t | ƒ k rC|  j j ƒ  | j |  j ƒ qCn  |  j | k r©t j |  j j
 ƒ  d ƒ } | d k r™|  j j ƒ  | j |  j ƒ n  | j | ƒ n  |  j | k r¤ t j |  j j
 ƒ  d ƒ } | d k rÿ|  j j ƒ  | j |  j ƒ n  | j | ƒ q¤ q¤ W| d  k	 r1d j | ƒ } n  | d  k	 rOd j | ƒ } n  |  j ršt t d ƒ rš| r|  j | ƒ } n  | rš|  j | ƒ } qšn  |  j ƒ  | | f S(   Ni    i   i   R*   R™   (   R   RA   t   flushR-   RI   RB   RC   t   selectRH   R_   Rk   R–   R.   R   R`   R0   RE   Rž   RŸ   R\   R#   (   R   Rb   t   read_sett	   write_setRB   RC   t   input_offsett   rlistt   wlistt   xlistt   bytes_writtenR[   (    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyRa   ¿  s^    					'

N(   R   R   R   R,   R   R\   R   R]   Rc   R@   RF   Rl   Rz   RG   R   R#   R—   Ra   R«   R°   RÒ   (    (    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyR   d   s*   0-		0			!		!				H	
	(    (    (!   R   t   platformR@   RH   R|   R½   R²   t	   ExceptionR   Rš   Rh   t   _subprocessR
   R   RÕ   t   errnoR£   RÀ   t   __all__t   sysconfR­   R,   t	   NameErrorRˆ   R   R"   R   R   R   R   R7   t   objectR   (    (    (    sm   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/pproc.pyt   <module>   sD   



				