U ,a:@sjdZddlZddlZddlZdddgZGdddeZdddd dZdd dZd d Z e d krfe dS)zImplementation of the UUencode and UUdecode functions. encode(in_file, out_file [,name, mode], *, backtick=False) decode(in_file [, out_file, mode, quiet]) NErrorencodedecodec@s eZdZdS)rN)__name__ __module__ __qualname__rr'/opt/alt/python38/lib64/python3.8/uu.pyr'sFbacktickc Csjg}zH|dkrtjj}n`t|trz|dkr8tj|}|dkrfzt |j }Wnt k rdYnXt |d}| ||dkrtjj}nt|trt |d}| ||dkrd}|dkrd}|dd}|dd }|d |d @|fd |d }t|dkr0|tj||d|d }q|rB|dn |dW5|D]}|qTXdS)z Uuencode file-Nrbwbi z\n z\rz begin %o %s iascii-rr s` end s end )closesysstdinbuffer isinstancestrospathbasenamestatst_modeAttributeErroropenappendstdoutreplacewriterreadlenbinasciiZb2a_uu)in_fileout_filenamemoder opened_filesfdatarrr r*sF             c Csg}|dkrtjj}nt|tr4t|d}||z|}|sLt d| dsXq8| dd}t |dkr8|ddkr8zt |d d WqWq8tk rYq8Xq8|d kr|dd d }tj|rt d||d krt |d d }|dkrtjj}n0t|tr8t|d}t|||}|||} | r| d dkrzt| } Wnjtj k r} zH| ddd@ddd} t| d | } |stjd| W5d } ~ XYnX|| |} q@| st dW5|D]}|qXd S)zDecode uuencoded filer r z'No valid begin line found in input filesbegin rNs rz"Cannot overwrite existing file: %srsend ?z Warning: %s zTruncated input file)rrrrrrr rreadliner startswithsplitr%int ValueErrorrstriprrrexistsr!chmodstripr&Za2b_uustderrr#) r'r(r*quietr+r,ZhdrZ hdrfieldsfpsr-vnbytesrrr rds^              "   cCs4ddl}|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]])Zusagez-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!rrKrrrprintargvr)rLparserZoptionsargsinputoutputrrr tests6              rV__main__)NN)NNF) __doc__r&rr__all__ ExceptionrrrrVrrrrr s : C&