o
    fs
                     @   s.   d Z ddlZG dd dZdd Zdd ZdS )	z
Basic subprocess implementation for POSIX which only uses os functions. Only
implement features required by setup.py to build C extension modules when
subprocess is unavailable. setup.py is not used on Windows.
    Nc                   @   s   e Zd ZdddZdd ZdS )PopenNc                 C   s   || _ || _d | _d S N)_cmd_env
returncode)selfcmdenv r
   &/usr/lib/python3.10/_bootsubprocess.py__init__   s   
zPopen.__init__c              	   C   s   t  }|dkr=z.| jd urt | jd | j| j nt | jd | j W t d | j	S W t d | j	S t d w t |d\}}t || _	| j	S )Nr      )
osforkr   execver   execv_exitwaitpidwaitstatus_to_exitcoder   )r   pid_statusr
   r
   r   wait   s   


z
Popen.waitr   )__name__
__module____qualname__r   r   r
   r
   r
   r   r      s    
r   c                 C   s   g }dD ]\}}t t|t|d D ]	}|t| qq|d d|}t| ttfr2| }nt| tr;| g}ndS |D ]}t|tsI dS |sN dS |D ]
}||vrZ  dS qPq?dS )N))az)AZ)09r   z./- FT)	rangeordappendchrjoin
isinstancetupleliststr)r   
safe_charsfirstlastch
check_strsargr
   r
   r   
_check_cmd$   s.   



r2   c                 K   s  |rt t|t| std| d}t| tsd| } |  d| } zQt| }t	|}|r=td| d|zt
|d}| }W d    n1 sRw   Y  W n tyc   d}Y nw W zt| W |S  tyw   Y |S w zt| W w  ty   Y w w )	Nzunsupported command: zcheck_output.tmp z >zCommand z returned non-zero exit status rb    )NotImplementedErrorreprr2   
ValueErrorr(   r+   r'   r   systemr   openreadFileNotFoundErrorunlinkOSError)r   kwargstmp_filenamer   exitcodefpstdoutr
   r
   r   check_outputB   sH   





rD   )__doc__r   r   r2   rD   r
   r
   r
   r   <module>   s
    