
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \k  ã               @   sd   d Z ddlZddlZddlZdddgZG dd„ deƒZddd„Zdd	d„Zd
d„ Z	e
dkr`e	ƒ  dS )zƒImplementation of the UUencode and UUdecode functions.

encode(in_file, out_file [,name, mode])
decode(in_file [, out_file, mode])
é    NÚErrorÚencodeÚdecodec               @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r   r   ú/usr/lib64/python3.6/uu.pyr   '   s   c             C   sB  g }�z| dkrt jj} n`t| tƒrz|dkr8tjj| ƒ}|dkrfytj| ƒj	}W n t
k
rd   Y nX t| dƒ} |j| ƒ |dkrŒt jj}nt|tƒrªt|dƒ}|j|ƒ |dkr¶d}|dkrÂd}|jd|d@ |f jdƒƒ | jd	ƒ}x,t|ƒd
k�r|jtj|ƒƒ | jd	ƒ}qêW |jdƒ W dx|D ]}|jƒ  �q*W X dS )zUuencode fileú-NÚrbÚwbi¶  zbegin %o %s
iÿ  Úasciié-   r   s    
end
)ÚsysÚstdinÚbufferÚ
isinstanceÚstrÚosÚpathÚbasenameÚstatÚst_modeÚAttributeErrorÚopenÚappendÚstdoutÚwriter   ÚreadÚlenÚbinasciiZb2a_uuÚclose)Úin_fileÚout_fileÚnameÚmodeÚopened_filesÚdataÚfr   r   r	   r   *   s>    









Fc             C   s:  g }| dkrt jj} nt| tƒr4t| dƒ} |j| ƒ �zäxr| jƒ }|sNtdƒ‚|j	dƒsZq:|j
ddƒ}t|ƒdkr:|d dkr:yt|d	 d
ƒ P W q: tk
r¦   Y q:X q:W |dkrà|d jdƒjdƒ}tjj|ƒràtd| ƒ‚|dkröt|d	 d
ƒ}|dk�r
t jj}nNt|tƒ�rXt|dƒ}ytjj||ƒ W n tk
�rH   Y nX |}|j|ƒ | jƒ }x¨|�r|jdƒdk�rytj|ƒ}	W nj tjk
�rð }
 zJ|d d d@ d d d }tj|d|… ƒ}	|�sàt jjd|
 ƒ W Y dd}
~
X nX |j|	ƒ | jƒ }�qbW |�stdƒ‚W dx|D ]}|jƒ  �q"W X dS )zDecode uuencoded filer
   r   z'No valid begin line found in input files   beginó    é   é   r   é   é   Ns    	
r   z"Cannot overwrite existing file: %sr   s   endé    é?   é   é   zWarning: %s
zTruncated input file)r   r   r   r   r   r   r   Úreadliner   Ú
startswithÚsplitr   ÚintÚ
ValueErrorÚrstripr   r   r   Úexistsr   Úchmodr   Ústripr    Za2b_uuÚstderrr   r!   )r"   r#   r%   Úquietr&   ZhdrZ	hdrfieldsÚfpÚsr'   ÚvÚnbytesr(   r   r   r	   r   Z   sf    









"

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� |jƒ \}}t|ƒdkrl|jdƒ tjdƒ tjj	}tj
j	}t|ƒdkr�|d }t|ƒdkr¤|d }|jrì|jràt|tƒrÆt|dƒ}nttjd dƒ tjdƒ t||ƒ nD|j�r&t|tƒ�rt|dƒ}nttjd dƒ tjdƒ t||ƒ dS )zuuencode/uudecode main programr   Nz'usage: %prog [-d] [-t] [input [output]])Z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 argumentsr,   r   z: cannot do -t to stdoutr   z: cannot do -t from stdin)ÚoptparseZOptionParserZ
add_optionÚ
parse_argsr   Úerrorr   Úexitr   r   r   r   rF   r   r   r   ÚprintÚargvr   )rG   ÚparserZoptionsÚargsÚinputÚoutputr   r   r	   Útest    s6    




rQ   Ú__main__)NN)NNF)Ú__doc__r    r   r   Ú__all__Ú	Exceptionr   r   r   rQ   r   r   r   r   r	   Ú<module>   s   

0
F&