File: //lib/python3.10/__pycache__/_bootsubprocess.cpython-310.pyc
o
    E�hs
  �                   @   s.   d Z ddlZG dd� d�Zdd� Zdd� ZdS )	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 Zd Zddd�Zdd� ZdS )�PopenNc                 C   s   || _ || _d | _d S �N)�_cmd�_env�
returncode)�self�cmd�env� r
   �&/usr/lib/python3.10/_bootsubprocess.py�__init__   s   
zPopen.__init__c              	   C   s�   t �� }|dkr=z.| jd urt �| jd | j| j� nt �| jd | 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 }dD ]\}}t t|�t|�d �D ]	}|�t|�� qq|�d� d�|�}t| ttf�r2| }nt| t�r;| g}ndS |D ]}t|t�sI dS |sN dS |D ]
}||vrZ  dS qPq?dS )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  |rt t|���t| �std| ����d}t| t�sd�| �} | � d|� �} zQt�| �}t�	|�}|r=td| �d|����zt
|d��}|�� }W d   � n1 sRw   Y  W n tyc   d}Y nw W zt�
|� W |S  tyw   Y |S w zt�
|� W w  ty�   Y w w )	Nzunsupported command: zcheck_output.tmp� z >zCommand z returned non-zero exit status �rb�    )�NotImplementedError�reprr2   �
ValueErrorr(   r+   r'