o Kögmã@sldZddlZddlZddlZgd¢ZGdd„deƒZdddœdd „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)ÚErrorÚencodeÚdecodec@s eZdZdS)rN)Ú__name__Ú __module__Ú __qualname__©rrú)/opt/alt/python310/lib64/python3.10/uu.pyr&srF©Úbacktickc Csxg}z¯|dkr tjj}n/t|tƒr;|durtj |¡}|dur1zt |¡j }Wn t y0Ynwt |dƒ}|  |¡|dkrDtj j}nt|tƒrSt |dƒ}|  |¡|durYd}|dur_d}| dd¡}| dd ¡}| d |d @|f d ¡¡| d ¡}t|ƒdkr™| tj||d¡| d ¡}t|ƒdks„|r¡| d¡n| d¡W|D]}| ¡q©dS|D]}| ¡q´w)z Uuencode fileú-NÚrbÚwbi¶Ú z\nú z\rz begin %o %s iÿÚasciié-rr s` end s end )ÚsysÚstdinÚbufferÚ isinstanceÚstrÚosÚpathÚbasenameÚstatÚst_modeÚAttributeErrorÚopenÚappendÚstdoutÚreplaceÚwriterÚreadÚlenÚbinasciiZb2a_uuÚclose)Úin_fileÚout_fileÚnameÚmoder Ú opened_filesÚdataÚfrrr r)sR    ÿ            þ  €  ÿ ÿrc Cs~g}|dkr tjj}nt|tƒrt|dƒ}| |¡z | ¡}|s'tdƒ‚|  d¡s-q|  dd¡}t |ƒdkrR|d dkrRz t |d d ƒWn t yQYnwq|d ur•|d d ¡ d¡}tj |¡rntd|›ƒ‚|  tj¡sdtj›|vstjr•|  tj¡sdtj›|vr•td|›dƒ‚|d ur t |d d ƒ}|dkr©tjj}nt|tƒrÀt|dƒ}t ||¡|}| |¡| ¡}|r | d ¡dkr zt |¡} Wn6tjy } z(|d dd@ddd} t |d | …¡} |stj d| ¡WYd } ~ nd } ~ ww| | ¡| ¡}|r | d ¡dksÏ|s'tdƒ‚W|D]} |  ¡q*d S|D]} |  ¡q6w)zDecode uuencoded filer r Tz'No valid begin line found in input filesbeginó éérééNs rz Cannot overwrite existing file: z..zRefusing to write to z due to directory traversalrsendé é?ééz Warning: %s zTruncated input file)rrrrrrrÚreadlinerÚ startswithÚsplitr$ÚintÚ ValueErrorÚrstriprrrÚexistsÚsepÚaltsepr ÚchmodÚstripr%Za2b_uuÚstderrr"r&) r'r(r*Úquietr+ZhdrZ hdrfieldsÚfpÚsr,ÚvÚnbytesr-rrr rcs‚       ÿõ   ÿ þ     €û ö ÿ  ÿ ÿrcCs2ddl}|jdd}|jddddd d d |jd d ddd d d | ¡\}}t|ƒdkr6| d¡t d¡tjj }tj j }t|ƒdkrH|d}t|ƒdkrR|d}|j rw|j rpt |tƒrct|dƒ}n ttjddƒt d¡t ||ƒdS|j r’t |tƒr…t|dƒ}n ttjddƒt d¡t||ƒdS)zuuencode/uudecode main programrNz'usage: %prog [-d] [-t] [input [output]])Zusagez-dz--decoderzDecode (instead of encode)?FÚ store_true)ÚdestÚhelpÚdefaultÚactionz-tz--textÚtextz2data 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$ÚerrorrÚexitrrr rrMrrrÚprintÚargvr)rNÚparserZoptionsÚargsÚinputÚoutputrrr Útest­s6             rXÚ__main__)NN)NNF) Ú__doc__r%rrÚ__all__Ú ExceptionrrrrXrrrrr Ús :J& ÿ