a ٶZgm@shdZddlZddlZddlZgdZGdddeZddddd Zdd d Zd d Z e dkrde dS)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/usr/lib64/python3.9/uu.pyr&srFbacktickc Cszg}zX|dkrtjj}n^t|trx|dur8tj|}|durdzt|j }Wnt ybYn0t |d}| ||dkrtj j}nt|trt |d}| ||durd}|durd}|dd}|dd }|d |d @|fd |d }t|dkr,|tj||d|d }q|r>|dn |dW|D]}|qNn|D]}|qd0dS)z Uuencode file-Nrbwbi z\n z\rz begin %o %s iascii-rr s` end s end )sysstdinbuffer isinstancestrospathbasenamestatst_modeAttributeErroropenappendstdoutreplacewriterreadlenbinasciiZb2a_uuclose)in_fileout_filenamemoder opened_filesdatafrrr r)sJ                rc Csg}|dkrtjj}nt|tr4t|d}||z2|}|sLtd| dsXq8| dd}t |dkr8|ddkr8zt |d d WqWq8t yYq80q8|d ur8|dd d }tj|rtd|| tjs(dtj|vs(tjr8| tjs(dtj|vr8td|d|d urPt |d d }|dkrdtjj}n0t|trt|d}t|||}|||}|rD|d dkrDzt|} Wnltjy,} zP|ddd@ddd} t|d | } |stjd| WYd } ~ n d } ~ 00|| |}q|sRtdW|D]} | qXn|D]} | qn0d S)zDecode uuencoded filer r z'No valid begin line found in input filesbegin rNs rz Cannot overwrite existing file: z..zRefusing to write to z due to directory traversalrsend ?z Warning: %s zTruncated input file)rrrrrrrreadliner startswithsplitr$int ValueErrorrstriprrrexistssepaltsepr chmodstripr%Za2b_uustderrr"r&) r'r(r*quietr+ZhdrZ hdrfieldsfpsr,vnbytesr-rrr rcsv                 &   rcCs4ddl}|jdd}|jddddd d d |jd d ddd d d |\}}t|dkrl|dtdtjj }tj j }t|dkr|d}t|dkr|d}|j r|j rt |trt|d}nttjddtdt ||nD|j r&t |tr t|d}nttjddtdt||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?r/zincorrect number of argumentsr1rz: cannot do -t to stdoutr z: cannot do -t from stdin)optparseZ OptionParserZ add_option parse_argsr$errorrexitrrr rrNrrrprintargvr)rOparseroptionsargsinputoutputrrr tests6              rZ__main__)NN)NNF) __doc__r%rr__all__ ExceptionrrrrZrrrrr s: J&