3 \k � @ sd d Z ddlZddlZddlZdddgZG dd� de�Zd dd�Zdd d�Zd d� Z e dkr`e � dS )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 Zd ZdS )r N)�__name__� __module__�__qualname__� r r �/usr/lib64/python3.6/uu.pyr ' s c C sB g }�z| dkrt jj} n`t| t�rz|dkr8tjj| �}|dkrfytj| �j }W n t k rd Y nX t| d�} |j| � |dkr�t j j}nt|t�r�t|d�}|j|� |dkr�d}|dkr�d}|jd|d@ |f jd�� | jd �}x,t|�d k�r|jtj|�� | jd �}q�W |jd� W dx|D ]}|j� �q*W X dS )z Uuencode file�-N�rb�wbi� zbegin %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�binasciiZb2a_uu�close)�in_file�out_file�name�mode�opened_files�data�fr r r r * s> Fc C s: g }| dkrt jj} nt| t�r4t| d�} |j| � �z�xr| j� }|sNtd��|j d�sZq:|j dd�}t|�dkr:|d dkr:yt|d d � P W q: t k r� Y q:X q:W |dkr�|d jd�jd �}tjj|�r�td| ��|dkr�t|d d �}|dk�r t jj}nNt|t��rXt|d�}ytjj||� W n tk �rH Y nX |}|j|� | j� }x�|�r|jd�dk�rytj|�} W nj tjk �r� } zJ|d d d@ d d d }tj|d|� �} |�s�t jjd| � W Y dd} ~ X nX |j| � | j� }�qbW |�std��W dx|D ]}|j� �q"W X dS )zDecode uuencoded filer r z'No valid begin line found in input files begin� � � r � � Ns r z"Cannot overwrite existing file: %sr s end� �? � � zWarning: %s zTruncated input file)r r r r r r r �readliner � startswith�splitr �int� ValueError�rstripr r r �existsr �chmodr �stripr Za2b_uu�stderrr r! ) r" r# r% �quietr&