B
    ݜwa/                 @   sj   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d	dZdd
dZdd Z	e
dkrfe	  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   lib/python3.7/uu.pyr   '   s   F)backtickc         	   C   sr  g }zL| dkrt jj} n`t| trz|dkr8tj| }|dkrfyt| j	}W n t
k
rd   Y nX t| d} ||  |dkrt jj}nt|trt|d}|| |dkrd}|dkrd}|dd}|dd	}|d
|d@ |f d | d}x2t|dkr2|tj||d | d}qW |rF|d n
|d W dx|D ]}|  qZW X 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binasciiZb2a_uuclose)in_fileout_filenamemoder
   opened_filesdatafr   r   r	   r   *   sF    









c          
   C   s  g }| dkrt jj} nt| tr4t| d} ||  zxr|  }|sNtd|	dsZq:|
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 dd}tj|rtd| |dkrt|d	 d
}|dkr
t jj}n0t|tr:t|d}t|| |}|| |  }x|r|ddkryt|}	W nj tjk
r }
 zH|d d d@ d d d }t|d| }	|st jd|
  W dd}
~
X Y nX ||	 |  }qDW |stdW dx|D ]}|  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   chmodstripr$   Za2b_uustderrr!   r%   )r&   r'   r)   quietr*   ZhdrZ	hdrfieldsfpsr+   vnbytesr,   r   r   r	   r   d   s`    









"

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]])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 argumentsr0   r   z: cannot do -t to stdoutr   z: cannot do -t from stdin)optparseZOptionParserZ
add_option
parse_argsr#   errorr   exitr   r   r   r   rJ   r   r   r   printargvr   )rK   parserZoptionsargsinputoutputr   r   r	   test   s6    




rU   __main__)NN)NNF)__doc__r$   r   r   __all__	Exceptionr   r   r   rU   r   r   r   r   r	   <module>   s   
:
C&