o
    DXîh…  ã                   @   sj   	 d dl Z d dlZd dlZg d¢ZG dd„ deƒZdddœdd„Zdd	d
„Zdd„ Ze	dkr3eƒ  dS dS )é    N)ÚErrorÚencodeÚdecodec                   @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r   r   ú,/opt/python-3.10.19/usr/lib/python3.10/uu.pyr   '   s    r   F©Úbacktickc             	   C   sz  	 g }z¯| dkrt jj} n/t| tƒr<|d u rtj | ¡}|d u r2zt | ¡j	}W n	 t
y1   Y nw t| dƒ} | | ¡ |dkrEt jj}nt|tƒrTt|dƒ}| |¡ |d u rZd}|d u r`d}| dd¡}| dd¡}| d	|d
@ |f  d¡¡ |  d¡}t|ƒdkrš| tj||d¡ |  d¡}t|ƒdks…|r¢| d¡ n| d¡ W |D ]}| ¡  qªd S |D ]}| ¡  qµw )Nú-ÚrbÚwbi¶  Ú
z\núz\rzbegin %o %s
iÿ  Úasciié-   r   r
   s   `
end
s    
end
)ÚsysÚstdinÚbufferÚ
isinstanceÚstrÚosÚpathÚbasenameÚstatÚst_modeÚAttributeErrorÚopenÚappendÚstdoutÚreplaceÚwriter   ÚreadÚlenÚbinasciiZb2a_uuÚclose)Úin_fileÚout_fileÚnameÚmoder   Úopened_filesÚdataÚfr   r   r	   r   *   sT   

ÿ







þ
€
ÿ
ÿr   c              
   C   s€  	 g }| dkrt jj} nt| tƒrt| dƒ} | | ¡ z	 |  ¡ }|s(tdƒ‚| 	d¡s.q| 
dd¡}t|ƒdkrS|d	 dkrSz	t|d
 dƒ W n
 tyR   Y nw q|d u r–|d  d¡ d¡}tj |¡rotd|› ƒ‚| 	tj¡sŽdtj› |v sŽtjr–| 	tj¡sŽdtj› |v r–td|› dƒ‚|d u r¡t|d
 dƒ}|dkrªt jj}nt|tƒrÁt|dƒ}t ||¡ |}| |¡ |  ¡ }|r!| d¡dkr!zt |¡}	W n6 tjy }
 z(|d	 d d@ d d d }t |d |… ¡}	|st j d|
 ¡ W Y d }
~
nd }
~
ww | |	¡ |  ¡ }|r!| d¡dksÐ|s(tdƒ‚W |D ]}| ¡  q+d S |D ]}| ¡  q7w )Nr   r   Tz'No valid begin line found in input files   beginó    é   é   r   é   é   s    	
r   z Cannot overwrite existing file: z..zRefusing to write to z due to directory traversalr   s   endé    é?   é   é   zWarning: %s
zTruncated input file)r   r   r   r   r   r   r   Úreadliner   Ú
startswithÚsplitr$   ÚintÚ
ValueErrorÚrstripr   r   r   ÚexistsÚsepÚaltsepr    ÚchmodÚstripr%   Za2b_uuÚstderrr"   r&   )r'   r(   r*   Úquietr+   ZhdrZ	hdrfieldsÚfpÚsr,   ÚvÚnbytesr-   r   r   r	   r   d   s„   




ÿõÿ
þ



€û
öÿÿÿr   c                  C   s4  	 dd l } | jdd}|jdddddd	d
 |jdddddd	d
 | ¡ \}}t|ƒdkr7| d¡ t d¡ tjj	}tj
j	}t|ƒdkrI|d }t|ƒdkrS|d }|jrx|jrqt|tƒrdt|dƒ}nttjd dƒ t d¡ t||ƒ d S |jr“t|tƒr†t|dƒ}nttjd dƒ t d¡ t||ƒ d S )Nr   z'usage: %prog [-d] [-t] [input [output]])Úusagez-dz--decoder   zDecode (instead of encode)?FÚ
store_true)ÚdestÚhelpÚdefaultÚactionz-tz--textÚtextz2data is text, encoded format unix-compatible text?r/   zincorrect number of argumentsr1   r   z: cannot do -t to stdoutr   z: cannot do -t from stdin)ÚoptparseZOptionParserZ
add_optionÚ
parse_argsr$   Úerrorr   Úexitr   r   r    r   rN   r   r   r   ÚprintÚargvr   )rO   ÚparserÚoptionsÚargsÚinputÚoutputr   r   r	   Útest®   s8   





rZ   Ú__main__)NN)NNF)
r%   r   r   Ú__all__Ú	Exceptionr   r   r   rZ   r   r   r   r   r	   Ú<module>   s   
:J&
ÿ