a ° …gmã@shdZddlZddlZddlZgd¢ZGdd„deƒZdddœdd „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)ÚErrorÚencodeÚdecodec@s eZdZdS)rN)Ú__name__Ú __module__Ú __qualname__©rrú'/opt/alt/python39/lib64/python3.9/uu.pyr&srF©Úbacktickc Cszg}zX|dkrtjj}n^t|tƒrx|dur8tj |¡}|durdzt |¡j }Wnt ybYn0t |dƒ}|  |¡|dkrŠtj j}nt|tƒr¨t |dƒ}|  |¡|dur´d}|durÀd}| dd¡}| dd ¡}| d |d @|f d ¡¡| d ¡}t|ƒdkr,| tj||d¡| d ¡}qþ|r>| d¡n | d¡W|D]}| ¡qNn|D]}| ¡qd0dS)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)sJ                ÿrc Cs„g}|dkrtjj}nt|tƒr4t|dƒ}| |¡z2| ¡}|sLtdƒ‚|  d¡sXq8|  dd¡}t |ƒdkr8|ddkr8zt |d d ƒWq¨Wq8t y¤Yq80q8|d ur8|d d ¡ d ¡}tj |¡ràtd|›ƒ‚|  tj¡s(dtj›|vs(tjr8|  tj¡s(dtj›|vr8td|›dƒ‚|d urPt |d d ƒ}|dkrdtjj}n0t|tƒr”t|dƒ}t ||¡|}| |¡| ¡}|rD| d ¡dkrDzt |¡} Wnltjy,} zP|ddd@ddd} t |d | …¡} |stj d| ¡WYd } ~ n d } ~ 00| | ¡| ¡}qœ|sRtdƒ‚W|D]} |  ¡qXn|D]} |  ¡qn0d S)zDecode uuencoded filer r z'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 rcsv         ÿþ ýü       &   ÿrcCs4ddl}|jdd}|jddddd d d |jd d ddd d d | ¡\}}t|ƒdkrl| d¡t d¡tjj }tj j }t|ƒdkr|d}t|ƒdkr¤|d}|j rì|j ràt |tƒrÆt|dƒ}nttjddƒt d¡t ||ƒnD|j r&t |tƒr t|dƒ}nttjddƒ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&