B ‚Ž\] ã@sjdZddlZddlZddlZdddgZGdd„deƒZdddœd d„Zdd d„Zd 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]) éNÚErrorÚencodeÚdecodec@s eZdZdS)rN)Ú__name__Ú __module__Ú __qualname__©rrú/usr/local/lib/python3.7/uu.pyr'sF)Úbacktickc CsXg}z2|dkrtjj}n`t|tƒrz|dkr8tj |¡}|dkrfyt |¡j }Wnt k rdYnXt |dƒ}|  |¡|dkrŒtj j}nt|tƒrªt |dƒ}|  |¡|dkr¶d}|dkrÂd}| d|d@|f d¡¡| d ¡}x0t|ƒd kr| tj||d ¡| d ¡}qêW|r,| d ¡n | d ¡Wdx|D]}| ¡q@WXdS)z Uuencode fileú-NÚrbÚwbi¶z begin %o %s iÿÚasciié-r)r s` end s end )ÚsysÚstdinÚbufferÚ isinstanceÚstrÚosÚpathÚbasenameÚstatÚst_modeÚAttributeErrorÚopenÚappendÚstdoutÚwriterÚreadÚlenÚbinasciiÚb2a_uuÚclose)Úin_fileÚout_fileÚnameÚmoder Ú opened_filesÚdataÚfrrr r*sB            c Csg}|dkrtjj}nt|tƒr4t|dƒ}| |¡zÆxr| ¡}|sNtdƒ‚|  d¡sZq:|  dd¡}t |ƒdkr:|ddkr:yt |d d ƒPWq:t k r¦Yq:Xq:W|d krà|d d ¡ d ¡}tj |¡ràtd|ƒ‚|d kröt |d d ƒ}|dkr tjj}n0t|tƒr:t|dƒ}t ||¡|}| |¡| ¡}x¨|rê| d ¡dkrêyt |¡} Wnjtjk rÒ} zH|ddd@ddd} t |d | …¡} |sÂtj d| ¡Wd d } ~ XYnX| | ¡| ¡}qDW|sútdƒ‚Wd x|D]} |  ¡qWXd S)zDecode uuencoded filer r z'No valid begin line found in input filesbeginó éérééNs rz"Cannot overwrite existing file: %sr sendé é?ééz Warning: %s zTruncated input file)rrrrrrrÚreadlinerÚ startswithÚsplitr ÚintÚ ValueErrorÚrstriprrrÚexistsrÚchmodÚstripr!Úa2b_uuÚstderrrr#) r$r%r'Úquietr(ÚhdrZ hdrfieldsÚfpÚsr)ÚvÚnbytesr*rrr r]s`               "   cCs4ddl}|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 argumentsr.r z: cannot do -t to stdoutr z: cannot do -t from stdin)ÚoptparseZ OptionParserZ add_optionÚ parse_argsr ÚerrorrÚexitrrrrrJrrrÚprintÚargvr)rKÚparserÚoptionsÚargsÚinputÚoutputrrr Útest s6              rVÚ__main__)NN)NNF) Ú__doc__r!rrÚ__all__Ú ExceptionrrrrVrrrrr Ús 3 C&