a
    ӗa/                     @   sh   d Z 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rde	  dS )zImplementation of the UUencode and UUdecode functions.

encode(in_file, out_file [,name, mode], *, backtick=False)
decode(in_file [, out_file, mode, quiet])
    N)Errorencodedecodec                   @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r   r   %/home/manager/Python-3.9.10/Lib/uu.pyr   '   s   r   Fbacktickc             	   C   sz  g }zX| dkrt jj} n^t| trx|du r8tj| }|du rdzt| j	}W n t
yb   Y n0 t| d} ||  |dkrt jj}nt|trt|d}|| |du rd}|du rd}|dd}|dd	}|d
|d@ |f d | d}t|dkr,|tj||d | d}q|r>|d n
|d W |D ]}|  qNn|D ]}|  qd0 dS )zUuencode file-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binasciib2a_uuclose)in_fileout_filenamemoder   opened_filesdatafr   r   r	   r   *   sJ    








r   c              
   C   s&  g }| dkrt jj} nt| tr4t| d} ||  z|  }|sLtd|	dsXq8|
dd}t|dkr8|d dkr8zt|d	 d
 W qW q8 ty   Y q80 q8|du r|d dd}tj|rtd| |du rt|d	 d
}|dkrt jj}n0t|tr6t|d}t|| |}|| |  }|r|ddkrzt|}	W nl tjy }
 zP|d d d@ d d d }t|d| }	|st jd|
  W Y d}
~
n
d}
~
0 0 ||	 |  }q>|stdW |D ]}|  qn|D ]}|  q0 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    chmodstripr%   a2b_uustderrr"   r'   )r(   r)   r+   quietr,   hdrZ	hdrfieldsfpsr-   vnbytesr.   r   r   r	   r   d   sb    








&

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rl|d td tjj	}tj
j	}t|dkr|d }t|dkr|d }|jr|jrt|trt|d}nttjd d td t|| nD|jr&t|trt|d}nttjd d td t|| dS )zuuencode/uudecode main programr   Nz'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?r0   zincorrect number of argumentsr2   r   z: cannot do -t to stdoutr   z: cannot do -t from stdin)optparseOptionParser
add_option
parse_argsr$   errorr   exitr   r   r    r   rO   r   r   r   printargvr   )rP   parseroptionsargsinputoutputr   r   r	   test   s6    




r]   __main__)NN)NNF)__doc__r%   r   r   __all__	Exceptionr   r   r   r]   r   r   r   r   r	   <module>   s   :
C&