o
…9j„ ã @ sl d Z ddlZddlZddlZg d¢ZG dd„ deƒZdddœdd „Zdd
d„Zdd
„ Z e
dkr4e ƒ dS 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 e Zd ZdS )r N)Ú__name__Ú
__module__Ú__qualname__© r r ú/usr/lib/python3.10/uu.pyr ' s r F©Úbacktickc C sx g }z¯| dkrt jj} n/t| tƒr;|du rtj | ¡}|du r1zt | ¡j }W n t
y0 Y nw t| dƒ} | | ¡ |dkrDt j
j}nt|tƒrSt|dƒ}| |¡ |du rYd}|du r_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\rzbegin %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ÚreplaceÚwriter ÚreadÚlenÚbinasciiÚb2a_uuÚclose)Úin_fileÚout_fileÚnameÚmoder Úopened_filesÚdataÚfr r r r * sR
ÿ
þ
€
ÿ
ÿr c
C s~ g }| dkrt jj} nt| tƒrt| dƒ} | | ¡ z | ¡ }|s'tdƒ‚| d¡s-q|
dd¡}t|ƒdkrR|d dkrRz t|d
dƒ W n
t
yQ Y nw q|du r•|d d
¡ d¡}tj |¡rntd|› ƒ‚| tj¡sdtj› |v stjr•| tj¡sdtj› |v r•td|› dƒ‚|du r t|d
dƒ}|dkr©t jj}nt|tƒrÀt|dƒ}t ||¡ |}| |¡ | ¡ }|r | d
¡dkr zt |¡} W n6 tjy }
z(|d d d@ d d d }t |d|… ¡} |st j d|
¡ W Y d}
~
nd}
~
ww | | ¡ | ¡ }|r | d
¡dksÏ|s'tdƒ‚W |D ]}| ¡ q*dS |D ]}| ¡ q6w )zDecode uuencoded filer r
Tz'No valid begin line found in input files beginó é é r é é Ns
r z Cannot overwrite existing file: z..zRefusing to write to z due to directory traversalr s endé é? é é zWarning: %s
zTruncated input file)r r r r r r r Úreadliner Ú
startswithÚsplitr$ ÚintÚ
ValueErrorÚrstripr r r ÚexistsÚsepÚaltsepr ÚchmodÚstripr% Úa2b_uuÚstderrr" r' )
r( r) r+ Úquietr, ÚhdrÚ hdrfieldsÚfpÚsr- ÚvÚnbytesr. r r r r d s‚
ÿõ
ÿ
þ
€û
öÿÿÿr c C s2 ddl } | jdd}|jddddd d
d |jdd
ddd d
d | ¡ \}}t|ƒdkr6| d¡ t d¡ tjj }tj
j }t|ƒdkrH|d }t|ƒdkrR|d }|jrw|jrpt
|tƒrct|dƒ}n
ttjd dƒ t d¡ t||ƒ dS |jr’t
|tƒr…t|dƒ}n
ttjd dƒ t d¡ t||ƒ dS )zuuencode/uudecode main programr Nz'usage: %prog [-d] [-t] [input [output]])Úusagez-dz--decoder zDecode (instead of encode)?FÚ
store_true)ÚdestÚhelpÚdefaultÚactionz-tz--textÚtextz2data is text, encoded format unix-compatible text?r0 zincorrect number of argumentsr2 r z: cannot do -t to stdoutr
z: cannot do -t from stdin)ÚoptparseÚOptionParserÚ
add_optionÚ
parse_argsr$ Úerrorr Úexitr r r r rR r r r ÚprintÚargvr )rS ÚparserÚoptionsÚargsÚinputÚoutputr r r Útest® s6
r` Ú__main__)NN)NNF)Ú__doc__r% r r Ú__all__Ú Exceptionr r r r` r r r r r Ú