o Ƌ|c/@sldZddlZddlZddlZgdZGdddeZddddd Zdd d Zd d Z e dkr4e dSdS)zImplementation of the UUencode and UUdecode functions. encode(in_file, out_file [,name, mode], *, backtick=False) decode(in_file [, out_file, mode, quiet]) N)Errorencodedecodec@s eZdZdS)rN)__name__ __module__ __qualname__rr/opt/conda/lib/python3.10/uu.pyr'srFbacktickc Csxg}z|dkr tjj}n/t|tr;|durtj|}|dur1zt|j }Wn t y0Ynwt |d}| ||dkrDtj j}nt|trSt |d}| ||durYd}|dur_d}|dd}|dd }|d |d @|fd |d }t|dkr|tj||d|d }t|dks|r|dn|dW|D]}|qdS|D]}|qw)z Uuencode file-Nrbwbi z\n z\rz begin %o %s iascii-rr s` end s end )sysstdinbuffer isinstancestrospathbasenamestatst_modeAttributeErroropenappendstdoutreplacewriterreadlenbinasciib2a_uuclose)in_fileout_filenamemoder opened_filesdatafrrr r*sR                    rc Csg}|dkr tjj}nt|trt|d}||z |}|s&td| ds,q| dd}t |dkrQ|d dkrQz t |d d Wn t yPYnwq|d url|dd d}tj|rltd||d urwt |d d }|dkrtjj}nt|trt|d}t|||}|||}|r|d dkrzt|} Wn4tjy} z'|d dd@ddd} t|d | } |stjd| WYd } ~ nd } ~ ww|| |}|r|d dks|stdW|D]} | qd S|D]} | qw)zDecode uuencoded filer r Tz'No valid begin line found in input filesbegin rNs rz"Cannot overwrite existing file: %srsend ?z Warning: %s zTruncated input file)rrrrrrrreadliner startswithsplitr$int ValueErrorrstriprrrexistsr chmodstripr%a2b_uustderrr"r') r(r)r+quietr,ZhdrZ hdrfieldsfpsr-vnbytesr.rrr rdsr                   rcCs2ddl}|jdd}|jddddd d d |jd d ddd d d |\}}t|dkr6|dtdtjj }tj j }t|dkrH|d}t|dkrR|d}|j rw|j rpt |trct|d}n ttjddtdt ||dS|j rt |trt|d}n ttjddtdt||dS)zuuencode/uudecode main programrNz'usage: %prog [-d] [-t] [input [output]])usagez-dz--decoderzDecode (instead of encode)?F store_true)desthelpdefaultactionz-tz--texttextz2data is text, encoded format unix-compatible text?r0zincorrect number of argumentsr2rz: cannot do -t to stdoutr z: cannot do -t from stdin)optparseZ OptionParser add_option parse_argsr$errorrexitrrr rrNrrrprintargvr)rOparseroptionsargsinputoutputrrr tests6             r[__main__)NN)NNF) __doc__r%rr__all__ Exceptionrrrr[rrrrr s :C&