Viewing File: /opt/alt/python38/lib64/python3.8/__pycache__/tarfile.cpython-38.opt-2.pyc

U

¡ê,aõnã@sfdZdZdZddlmZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZzddlZWnek
r„dZYnXzddlZWnek
rªdZYnXeefZzeef7ZWnek
rÖYnXdddd	d
ddd
dddddddgZdZdZedZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$d Z%d!Z&d"Z'd#Z(d$Z)d%Z*d&Z+d'Z,d(Z-d)Z.dZ/d*Z0d+Z1e1Z2e e!e"e#e&e'e(e$e%e)e*e+fZ3e e!e(e+fZ4e)e*e+fZ5d,Z6d-d.d/d0hZ7e8e8e8e9e9e9d1œZ:ej;d2krÐd3Z<ne =¡Z<d4d5„Z>d6d7„Z?d8d9„Z@d:e2fd;d<„ZAd=d>„ZBdedfd?d@„ZCdAdB„ZDGdCd	„d	eEƒZFGdDd
„d
eFƒZGGdEd
„d
eFƒZHGdFd„deFƒZIGdGd„deFƒZJGdHd„deFƒZKGdIdJ„dJeKƒZLGdKdL„dLeKƒZMGdMdN„dNeKƒZNGdOdP„dPeKƒZOGdQdR„dReKƒZPGdSdT„dTƒZQGdUdV„dVƒZRGdWdX„dXeSƒZTGdYdZ„dZeSƒZUGd[d\„d\ejVƒZWGd]d„deSƒZXGd^d„deSƒZYd_d„ZZeYjZd`da„Z[e\dbkrbe[ƒdS)cz0.9.0u"Lars Gustäbel (lars@gustaebel.de)u4Gustavo Niemeyer, Niels Gustäbel, Richard Townsend.é)ÚopenNÚTarFileÚTarInfoÚ
is_tarfileÚTarErrorÚ	ReadErrorÚCompressionErrorÚStreamErrorÚExtractErrorÚHeaderErrorÚENCODINGÚUSTAR_FORMATÚ
GNU_FORMATÚ
PAX_FORMATÚDEFAULT_FORMATróiésustar  sustar00édé›ó0ó1ó2ó3ó4ó5ó6ó7óLóKóSóxógóXéé)ÚpathÚlinkpathÚsizeÚmtimeÚuidÚgidÚunameÚgnamer%r&r+r,)ZatimeÚctimer(r)r*r'Úntúutf-8cCs(| ||¡}|d|…|t|ƒtS©N)ÚencodeÚlenÚNUL)ÚsÚlengthÚencodingÚerrors©r8ú,/opt/alt/python38/lib64/python3.8/tarfile.pyÚstnžsr:cCs*| d¡}|dkr|d|…}| ||¡S)Nréÿÿÿÿ)ÚfindÚdecode)r4r6r7Úpr8r8r9Únts¤s
r?cCs¦|ddkrbd}tt|ƒdƒD]}|dK}|||d7}q |ddkr¢dt|ƒd|}n@z"t|ddƒ}t| ¡p|d	dƒ}Wntk
r td
ƒ‚YnX|S)Nr)é€éÿr#érAéÚasciiÚstrictÚ0úinvalid header)Úranger2r?ÚintÚstripÚ
ValueErrorÚInvalidHeaderError)r4ÚnÚir8r8r9Únti¬srOrBcCsØt|ƒ}d|kr$d|dkrDnntd|d|fdƒt}n|tkrÌd|d|krrd|dkrÌnnV|dkrŠtdgƒ}ntdgƒ}d||}t|dƒD]}| d|d@¡|dL}q¬ntd	ƒ‚|S)
NrrBr#z%0*orDrCr@rAzoverflow in number field)rIÚbytesr3rÚ	bytearrayrHÚinsertrK)rMÚdigitsÚformatr4rNr8r8r9ÚitnÀs 2
rUcCs0dtt d|¡ƒ}dtt d|¡ƒ}||fS)NrCZ
148B8x356BZ
148b8x356b)ÚsumÚstructZunpack_from)ÚbufZunsigned_chksumZ
signed_chksumr8r8r9Úcalc_chksumsÝs	rYc	Cs¦|pd}|dkrdS|dkr.t |||¡dSt||ƒ\}}t|ƒD],}| |¡}t|ƒ|krf|dƒ‚| |¡qD|dkr¢| |¡}t|ƒ|kr˜|dƒ‚| |¡dS)Ni@rúunexpected end of data)ÚshutilÚcopyfileobjÚdivmodrHÚreadr2Úwrite)	ÚsrcZdstr5Ú	exceptionÚbufsizeÚblocksÚ	remainderÚbrXr8r8r9r\ês$


r\cCs8ttjddƒ}|dk	r(| |d¡ |¡}t|dddS)Nr6Úbackslashreplaceú )Úend)ÚgetattrÚsysÚstdoutr1r=Úprint)r4r6r8r8r9Ú_safe_printsrmc@seZdZdS)rN©Ú__name__Ú
__module__Ú__qualname__r8r8r8r9r
sc@seZdZdS)r
Nrnr8r8r8r9r

sc@seZdZdS)rNrnr8r8r8r9rsc@seZdZdS)rNrnr8r8r8r9rsc@seZdZdS)r	Nrnr8r8r8r9r	sc@seZdZdS)rNrnr8r8r8r9rsc@seZdZdS)ÚEmptyHeaderErrorNrnr8r8r8r9rrsrrc@seZdZdS)ÚTruncatedHeaderErrorNrnr8r8r8r9rssrsc@seZdZdS)ÚEOFHeaderErrorNrnr8r8r8r9rt"srtc@seZdZdS)rLNrnr8r8r8r9rL%srLc@seZdZdS)ÚSubsequentHeaderErrorNrnr8r8r8r9ru(sruc@s,eZdZdd„Zdd„Zdd„Zdd„Zd	S)
Ú
_LowLevelFilecCsFtjtjtjBtjBdœ|}ttdƒr2|tjO}t ||d¡|_dS)N©ÚrÚwÚO_BINARYi¶)	ÚosÚO_RDONLYÚO_WRONLYÚO_CREATÚO_TRUNCÚhasattrrzrÚfd)ÚselfÚnameÚmoder8r8r9Ú__init__5sþý

z_LowLevelFile.__init__cCst |j¡dSr0)r{Úcloser©r‚r8r8r9r†>sz_LowLevelFile.closecCst |j|¡Sr0)r{r^r©r‚r'r8r8r9r^Asz_LowLevelFile.readcCst |j|¡dSr0)r{r_r©r‚r4r8r8r9r_Dsz_LowLevelFile.writeN)rorprqr…r†r^r_r8r8r8r9rv/s	rvc@sneZdZdd„Zdd„Zdd„Zdd„Zd	d
„Zdd„Zd
d„Z	dd„Z
ddd„Zdd„Zdd„Z
dd„ZdS)Ú_Streamc	Csäd|_|dkrt||ƒ}d|_|dkr6t|ƒ}| ¡}|p<d|_||_||_||_||_d|_	d|_
d|_zL|dkrÖzddl}Wnt
k
ržtdƒ‚YnX||_| d¡|_|d	krÌ| ¡|j|_n| ¡nà|d
kr:zddl}Wnt
k
r
tdƒ‚YnX|d	kr.d|_| ¡|_t|_n
| ¡|_n||dkr zddl}Wnt
k
rntd
ƒ‚YnX|d	kr”d|_| ¡|_|j|_n
| ¡|_n|dkr¶td|ƒ‚Wn&|jsÒ|j ¡d|_‚YnXdS)NTFÚ*ÚórÚgzzzlib module is not availablerxÚbz2úbz2 module is not availableÚxzúlzma module is not availableÚtarúunknown compression type %r) Ú_extfileobjrvÚ_StreamProxyÚgetcomptyperƒr„ÚcomptypeÚfileobjrbrXÚposÚclosedÚzlibÚImportErrorrÚcrc32ÚcrcÚ
_init_read_gzÚerrorraÚ_init_write_gzrÚdbufZBZ2DecompressorÚcmpÚOSErrorZ
BZ2CompressorÚlzmaZLZMADecompressorÚ	LZMAErrorZLZMACompressorr†)	r‚rƒr„r˜r™rbrœrr¦r8r8r9r…Rsl












z_Stream.__init__cCst|dƒr|js| ¡dS)Nr›)r€r›r†r‡r8r8r9Ú__del__˜sz_Stream.__del__cCs’|j d|jj|jj|jjd¡|_t dtt	 	¡ƒ¡}| 
d|d¡|j d¡rf|jdd…|_t
j |j¡|_| 
|j dd	¡t¡dS)
Né	rú<Ls‹sÿú.gzéýÿÿÿz
iso-8859-1Úreplace)rœZcompressobjZDEFLATEDÚ	MAX_WBITSZ
DEF_MEM_LEVELr¤rWÚpackrIÚtimeÚ_Stream__writerƒÚendswithr{r%Úbasenamer1r3)r‚Z	timestampr8r8r9r¢œsýz_Stream._init_write_gzcCsR|jdkr|j ||j¡|_|jt|ƒ7_|jdkrD|j |¡}| |¡dS)NrŽr“)	r˜rœržrŸršr2r¤Úcompressr±r‰r8r8r9r_¬s

z
_Stream.writecCsN|j|7_t|jƒ|jkrJ|j |jd|j…¡|j|jd…|_qdSr0)rXr2rbr™r_r‰r8r8r9Z__write¶sz_Stream.__writecCs²|jr
dSd|_zŠ|jdkr:|jdkr:|j|j ¡7_|jdkr˜|jr˜|j 	|j¡d|_|jdkr˜|j 	t
 d|j¡¡|j 	t
 d|j
d@¡¡W5|js¬|j ¡XdS)NTryr“rrŽrªlÿÿ)r›r•r™r†r„r˜rXr¤Úflushr_rWr¯rŸršr‡r8r8r9r†¿s
z
_Stream.closecCsê|j |jj¡|_d|_| d¡dkr0tdƒ‚| d¡dkrFtdƒ‚t| d¡ƒ}| d¡|d	@rt| d¡ƒd
t| d¡ƒ}| 	|¡|d@r²| d¡}|r²|t
kr˜q²q˜|d@rÔ| d¡}|rÔ|t
krºqÔqº|d@ræ| d¡dS)
Nrr$s‹únot a gzip filer#ózunsupported compression methodéérCrBé)rœZ
decompressobjr®r¤r£Ú
_Stream__readrrÚordr^r3)r‚ÚflagZxlenr4r8r8r9r Õs*
 


z_Stream._init_read_gzcCs|jSr0)ršr‡r8r8r9Útellôsz_Stream.tellrcCsX||jdkrJt||j|jƒ\}}t|ƒD]}| |j¡q,| |¡ntdƒ‚|jS)Nrz seeking backwards is not allowed)ršr]rbrHr^r	)r‚ršrcrdrNr8r8r9Úseekùsz_Stream.seekcCs | |¡}|jt|ƒ7_|Sr0)Ú_readršr2)r‚r'rXr8r8r9r^s
z_Stream.readcCsÂ|jdkr| |¡St|jƒ}|jg}||krž|jrB|j}d|_n|j |j¡}|sVqžz|j 	|¡}Wn|j
k
r„tdƒ‚YnX| |¡|t|ƒ7}q&d 
|¡}||d…|_|d|…S)Nr“rzinvalid compressed data)r˜r»r2r£rXr™r^rbr¤Ú
decompressrarÚappendÚjoin©r‚r'ÚcÚtrXr8r8r9rÀ
s(




z
_Stream._readcCsjt|jƒ}|jg}||krF|j |j¡}|s.qF| |¡|t|ƒ7}qd |¡}||d…|_|d|…S)Nr)r2rXr™r^rbrÂrÃrÄr8r8r9Z__read(s


z_Stream.__readN)r)rorprqr…r¨r¢r_r±r†r r¾r¿r^rÀr»r8r8r8r9rŠGsF
	

rŠc@s,eZdZdd„Zdd„Zdd„Zdd„Zd	S)
r–cCs||_|j t¡|_dSr0)r™r^Ú	BLOCKSIZErX)r‚r™r8r8r9r…>sz_StreamProxy.__init__cCs|jj|_|jSr0)r™r^rXrˆr8r8r9r^Bs
z_StreamProxy.readcCsP|j d¡rdS|jdd…dkr8|jdd…dkr8d	S|j d
¡rHdSdSdS)
Ns‹rŽrésBZhr¹é
s1AY&SYr)s]€sý7zXZr‘r“)rXÚ
startswithr‡r8r8r9r—Fs$z_StreamProxy.getcomptypecCs|j ¡dSr0)r™r†r‡r8r8r9r†Psz_StreamProxy.closeN)rorprqr…r^r—r†r8r8r8r9r–9s
r–c@sfeZdZddd„Zdd„Zdd„Zdd	„Zd
d„Zdd
„Ze	j
fdd„Zddd„Zdd„Z
dd„ZdS)Ú_FileInFileNcCsÊ||_||_||_d|_t|ddƒ|_d|_|dkr>d|fg}d|_g|_d}|j}|D]L\}}||kr||j 	d||df¡|j 	d||||f¡||7}||}qX||jkrÆ|j 	d||jdf¡dS)NrrƒFT)
r™Úoffsetr'Úpositionrirƒr›Ú	map_indexÚmaprÂ)r‚r™rÌr'Z	blockinfoZlastposZrealposr8r8r9r…]s(


z_FileInFile.__init__cCsdSr0r8r‡r8r8r9rµvsz_FileInFile.flushcCsdS©NTr8r‡r8r8r9Úreadableysz_FileInFile.readablecCsdS)NFr8r‡r8r8r9Úwritable|sz_FileInFile.writablecCs
|j ¡Sr0)r™Úseekabler‡r8r8r9rÓsz_FileInFile.seekablecCs|jSr0)rÍr‡r8r8r9r¾‚sz_FileInFile.tellcCs|tjkr tt|dƒ|jƒ|_nj|tjkr\|dkrFt|j|dƒ|_qŠt|j||jƒ|_n.|tjkr‚tt|j||jƒdƒ|_ntdƒ‚|jS)NrzInvalid argument)	ÚioÚSEEK_SETÚminÚmaxr'rÍÚSEEK_CURÚSEEK_ENDrK)r‚rÍÚwhencer8r8r9r¿‡s


z_FileInFile.seekc	Cs
|dkr|j|j}nt||j|jƒ}d}|dkr|j|j\}}}}||jkr`|krhqŽnqŽq6|jd7_|jt|jƒkr6d|_q6t|||jƒ}|râ|j ||j|¡|j |¡}t|ƒ|krØt	dƒ‚||7}n|t
|7}||8}|j|7_q,|S)Nrrr#rZ)r'rÍrÖrÏrÎr2r™r¿r^rr3)	r‚r'rXÚdataÚstartÚstoprÌr5rer8r8r9r^—s,

z_FileInFile.readcCs&| t|ƒ¡}||dt|ƒ…<t|ƒSr0)r^r2)r‚rerXr8r8r9Úreadinto¶sz_FileInFile.readintocCs
d|_dSrÐ)r›r‡r8r8r9r†»sz_FileInFile.close)N)N)rorprqr…rµrÑrÒrÓr¾rÔrÕr¿r^rÞr†r8r8r8r9rËWs

rËcseZdZ‡fdd„Z‡ZS)ÚExFileObjectcs&t|j|j|j|jƒ}tƒ |¡dSr0)rËr™Úoffset_datar'ÚsparseÚsuperr…)r‚ÚtarfileÚtarinfor™©Ú	__class__r8r9r…Ás

ÿzExFileObject.__init__)rorprqr…Ú
__classcell__r8r8rår9rß¿srßc@s¶eZdZeddddddddd	d
ddd
ddddddddZdddd„Zedd„ƒZejdd„ƒZedd„ƒZ	e	jdd„ƒZ	dd„Z
dd „Zee
d!fd"d#„Zd$d%„Zd&d'„Zd(d)„Zed*d+„ƒZd,d-„Zed.d/„ƒZed0d1„ƒZed2d3„ƒZed4d5„ƒZed6d7„ƒZed8d9„ƒZd:d;„Zd<d=„Zd>d?„Zd@dA„ZdBdC„Z dDdE„Z!dFdG„Z"dHdI„Z#dJdK„Z$dLdM„Z%dNdO„Z&dPdQ„Z'dRdS„Z(dTdU„Z)dVdW„Z*dXdY„Z+dZd[„Z,d\d]„Z-d^d_„Z.d`da„Z/dbdc„Z0dS)erzName of the archive member.zPermission bits.z6User ID of the user who originally stored this member.z7Group ID of the user who originally stored this member.zSize in bytes.zTime of last modification.zHeader checksum.z–File type. type is usually one of these constants: REGTYPE, AREGTYPE, LNKTYPE, SYMTYPE, DIRTYPE, FIFOTYPE, CONTTYPE, CHRTYPE, BLKTYPE, GNUTYPE_SPARSE.zcName of the target file name, which is only present in TarInfo objects of type LNKTYPE and SYMTYPE.z
User name.zGroup name.zDevice major number.zDevice minor number.zThe tar header starts here.zThe file's data starts here.zMA dictionary containing key-value pairs of an associated pax extended header.zSparse member information.N)rƒr„r)r*r'r(ÚchksumÚtypeÚlinknamer+r,ÚdevmajorÚdevminorrÌràÚpax_headersrárãÚ_sparse_structsÚ_link_targetrŒcCsj||_d|_d|_d|_d|_d|_d|_t|_d|_	d|_
d|_d|_d|_
d|_d|_d|_i|_dS)Ni¤rrŒ)rƒr„r)r*r'r(rèÚREGTYPErérêr+r,rërìrÌràrárí©r‚rƒr8r8r9r…ís"zTarInfo.__init__cCs|jSr0©rƒr‡r8r8r9r%szTarInfo.pathcCs
||_dSr0ròrñr8r8r9r%
scCs|jSr0©rêr‡r8r8r9r&szTarInfo.linkpathcCs
||_dSr0ró)r‚rêr8r8r9r&scCsd|jj|jt|ƒfS)Nz<%s %r at %#x>)rærorƒÚidr‡r8r8r9Ú__repr__szTarInfo.__repr__cCsl|j|jd@|j|j|j|j|j|j|j|j	|j
|j|jdœ
}|dt
krh|d d¡sh|dd7<|S)Néÿ)
rƒr„r)r*r'r(rèrérêr+r,rërìrérƒú/)rƒr„r)r*r'r(rèrérêr+r,rërìÚDIRTYPEr²)r‚Úinfor8r8r9Úget_infos"ózTarInfo.get_infoÚsurrogateescapecCsT| ¡}|tkr| |||¡S|tkr4| |||¡S|tkrH| ||¡Stdƒ‚dS)Nzinvalid format)rúr
Úcreate_ustar_headerrÚcreate_gnu_headerrÚcreate_pax_headerrK)r‚rTr6r7rùr8r8r9Útobuf2sz
TarInfo.tobufcCsnt|d<t|d ||¡ƒtkr(tdƒ‚t|d ||¡ƒtkr^| |d||¡\|d<|d<| |t||¡S)NÚmagicrêzlinkname is too longrƒÚprefix)	ÚPOSIX_MAGICr2r1ÚLENGTH_LINKrKÚLENGTH_NAMEÚ_posix_split_nameÚ_create_headerr
)r‚rùr6r7r8r8r9rü@szTarInfo.create_ustar_headercCs€t|d<d}t|d ||¡ƒtkr<|| |dt||¡7}t|d ||¡ƒtkrl|| |dt||¡7}|| |t	||¡S)Nrrrêrƒ)
Ú	GNU_MAGICr2r1rÚ_create_gnu_long_headerÚGNUTYPE_LONGLINKrÚGNUTYPE_LONGNAMErr)r‚rùr6r7rXr8r8r9rýMszTarInfo.create_gnu_headerc
	Cs*t|d<|j ¡}ddtfddtfddfD]j\}}}||kr>q*z|| dd	¡Wn$tk
rv||||<Yq*YnXt||ƒ|kr*||||<q*d
D]`\}}||kr´d||<qš||}d|krØd|d
krænn
t|t	ƒršt
|ƒ||<d||<qš|r| |t|¡}	nd}	|	| 
|tdd¡S)Nrrƒr%rêr&)r+r+é )r,r,rrDrE))r)rB)r*rB)r'é)r(rrrBr#rr­)rríÚcopyrrr1ÚUnicodeEncodeErrorr2Ú
isinstanceÚfloatÚstrÚ_create_pax_generic_headerÚXHDTYPErr
)
r‚rùr6rírƒZhnamer5rSÚvalrXr8r8r9rþ[s8
þ
*
zTarInfo.create_pax_headercCs| |td¡S)Nr/)rÚXGLTYPE)Úclsrír8r8r9Úcreate_pax_global_headerŒsz TarInfo.create_pax_global_headercCs~| d¡}tdt|ƒƒD]T}d |d|…¡}d ||d…¡}t| ||¡ƒtkrt| ||¡ƒtkrqvqtdƒ‚||fS)Nr÷r#zname is too long)ÚsplitrHr2rÃr1Ú
LENGTH_PREFIXrrK)r‚rƒr6r7Z
componentsrNrr8r8r9r’s
ÿzTarInfo._posix_split_namecCsVt| dd¡d||ƒt| dd¡d@d|ƒt| dd¡d|ƒt| d	d¡d|ƒt| d
d¡d|ƒt| dd¡d|ƒd
| dt¡t| dd¡d||ƒ| dt¡t| dd¡d||ƒt| dd¡d||ƒt| dd¡d|ƒt| dd¡d|ƒt| dd¡d||ƒg}t dtd |¡¡}t	|td…ƒd}|dd…t
d|dƒ|dd…}|S)NrƒrŒrr„rrörBr)r*r'rr(s        rérêrr+rr,rërìrrz%dsri”þÿÿz%06orDi›þÿÿ)r:ÚgetrUrðrrWr¯rÇrÃrYrP)rùrTr6r7ÚpartsrXrèr8r8r9r¢s(

ñ&zTarInfo._create_headercCs.tt|ƒtƒ\}}|dkr*|t|t7}|S)Nr)r]r2rÇr3)Zpayloadrcrdr8r8r9Ú_create_payload¾szTarInfo._create_payloadcCsR| ||¡t}i}d|d<||d<t|ƒ|d<t|d<| |t||¡| |¡S)Nz
././@LongLinkrƒrér'r)r1r3r2rrr
r)rrƒrér6r7rùr8r8r9rÈsÿzTarInfo._create_gnu_long_headerc	Cs2d}| ¡D]8\}}z| dd¡Wqtk
rBd}YqFYqXqd}|rV|d7}| ¡D]\}}| d¡}|r‚| |d¡}n
| d¡}t|ƒt|ƒd}d	}	}
|tt|
ƒƒ}	|	|
krÂqÈ|	}
q¨|tt|
ƒd
ƒd|d|d
7}q^i}d|d<||d<t|ƒ|d<t|d<| |td
d¡| 	|¡S)NFr/rETrs21 hdrcharset=BINARY
rûrÈrrDó ó=ó
z././@PaxHeaderrƒrér'rr­)
Úitemsr1rr2rrPrrr
r)rrírér6ZbinaryÚkeywordÚvalueZrecordsÚlrMr>rùr8r8r9rÙs<

(ÿz"TarInfo._create_pax_generic_headerc	Csvt|ƒdkrtdƒ‚t|ƒtkr(tdƒ‚| t¡tkr>tdƒ‚t|dd…ƒ}|t|ƒkrbt	dƒ‚|ƒ}t
|dd…||ƒ|_t|dd	…ƒ|_t|d	d
…ƒ|_
t|d
d…ƒ|_t|dd…ƒ|_t|dd…ƒ|_||_|dd
…|_t
|d
d…||ƒ|_t
|dd…||ƒ|_t
|dd…||ƒ|_t|dd…ƒ|_t|dd…ƒ|_t
|dd…||ƒ}|jtkr†|j d¡r†t|_|jtkr8d}g}tdƒD]l}	z0t|||d…ƒ}
t||d|d…ƒ}Wntk
rôYqYnX| |
|f¡|d7}q¢t|dƒ}t|dd…ƒ}
|||
f|_ | !¡rP|j "d¡|_|rr|jt#krr|d|j|_|S)Nrzempty headerztruncated headerzend of file headeré”éœzbad checksumrélété|éˆéii	i)iIiQiYiôr÷i‚r¹réiâiãiï)$r2rrrÇrsÚcountr3rtrOrYrLr?rƒr„r)r*r'r(rèrérêr+r,rërìÚAREGTYPEr²røÚGNUTYPE_SPARSErHrKrÂÚboolrîÚisdirÚrstripÚ	GNU_TYPES)rrXr6r7rèÚobjrršÚstructsrNrÌÚnumbytesÚ
isextendedÚorigsizer8r8r9ÚfrombufsZ
zTarInfo.frombufcCs8|j t¡}| ||j|j¡}|j ¡t|_| |¡Sr0)	r™r^rÇr8r6r7r¾rÌÚ_proc_member)rrãrXr3r8r8r9ÚfromtarfileKszTarInfo.fromtarfilecCsT|jttfkr| |¡S|jtkr,| |¡S|jtttfkrF| 	|¡S| 
|¡SdSr0)rér
r	Ú
_proc_gnulongr.Ú_proc_sparserrÚSOLARIS_XHDTYPEÚ	_proc_paxÚ
_proc_builtin)r‚rãr8r8r9r9`s



zTarInfo._proc_membercCsR|j ¡|_|j}| ¡s$|jtkr4|| |j¡7}||_| 	|j
|j|j¡|Sr0)
r™r¾ràÚisregréÚSUPPORTED_TYPESÚ_blockr'rÌÚ_apply_pax_inforír6r7)r‚rãrÌr8r8r9r?mszTarInfo._proc_builtincCs†|j | |j¡¡}z| |¡}Wntk
r>tdƒ‚YnX|j|_|jt	krft
||j|jƒ|_
n|jtkr‚t
||j|jƒ|_|S)Nú missing or bad subsequent header)r™r^rBr'r:rrurÌrér
r?r6r7rƒr	rê)r‚rãrXÚnextr8r8r9r;~s

zTarInfo._proc_gnulongc
	CsÚ|j\}}}|`|rª|j t¡}d}tdƒD]n}z0t|||d…ƒ}t||d|d…ƒ}	Wntk
rzYqœYnX|r’|	r’| ||	f¡|d7}q,t|dƒ}q||_	|j 
¡|_|j| |j
¡|_||_
|S)Nrérr+iø)rîr™r^rÇrHrOrKrÂr/rár¾ràrBr'rÌ)
r‚rãr4r6r7rXršrNrÌr5r8r8r9r<”s(
zTarInfo._proc_sparsecCs.|j | |j¡¡}|jtkr&|j}n
|j ¡}t 	d|¡}|dk	rX| 
d¡ d¡|d<| d¡}|dkrr|j
}nd}t d¡}d}| ||¡}|s˜q6| ¡\}	}
t|	ƒ}	|	dkr¼tdƒ‚|| d	¡d| d¡|	d…}| |
dd|j¡}
|
tkr| |||j
|j¡}n| |dd|j¡}|||
<||	7}q„z| |¡}Wntk
rbtd
ƒ‚YnXd|kr|| ||¡nHd|kr–| |||¡n.| d
¡dkrÄ| d¡dkrÄ| |||¡|jttfkr*|  ||j
|j¡|j!|_!d|kr*|j"}
| #¡s|jt$kr$|
| |j¡7}
|
|_!|S)Ns\d+ hdrcharset=([^\n]+)\nr#r/Ú
hdrcharsetZBINARYs(\d+) ([^=]+)=rrGr$rDúGNU.sparse.mapúGNU.sparse.sizezGNU.sparse.majorÚ1zGNU.sparse.minorrFr')%r™r^rBr'rérrír
ÚreÚsearchÚgroupr=rr6ÚcompileÚmatchÚgroupsrIrLrhrÜÚ_decode_pax_fieldr7ÚPAX_NAME_FIELDSr:rruÚ_proc_gnusparse_01Ú_proc_gnusparse_00Ú_proc_gnusparse_10rr=rCrÌràr@rA)r‚rãrXrírOrGr6Zregexršr5r!r"rErÌr8r8r9r>°sh



$	
ÿ
ÿ
ÿ


 
zTarInfo._proc_paxcCshg}t d|¡D]}| t| d¡ƒ¡qg}t d|¡D]}| t| d¡ƒ¡q:tt||ƒƒ|_dS)Ns\d+ GNU.sparse.offset=(\d+)\nr#s\d+ GNU.sparse.numbytes=(\d+)\n)rKÚfinditerrÂrIrMÚlistÚziprá)r‚rErírXZoffsetsrOr5r8r8r9rTszTarInfo._proc_gnusparse_00cCs@dd„|d d¡Dƒ}tt|ddd…|ddd…ƒƒ|_dS)NcSsg|]}t|ƒ‘qSr8)rI)Ú.0Úxr8r8r9Ú
<listcomp>&sz.TarInfo._proc_gnusparse_01.<locals>.<listcomp>rHú,r$r#)rrWrXrá)r‚rErírár8r8r9rS#szTarInfo._proc_gnusparse_01cCs¨d}g}|j t¡}| dd¡\}}t|ƒ}t|ƒ|dkrtd|krT||j t¡7}| dd¡\}}| t|ƒ¡q,|j ¡|_t	t
|ddd…|ddd…ƒƒ|_dS)Nrr#r$)r™r^rÇrrIr2rÂr¾ràrWrXrá)r‚rErírãZfieldsrárXZnumberr8r8r9rU)szTarInfo._proc_gnusparse_10c	CsÂ| ¡D]ª\}}|dkr&t|d|ƒq|dkr@t|dt|ƒƒq|dkrZt|dt|ƒƒq|tkr|tkr”zt||ƒ}Wntk
r’d}YnX|dkr¦| d¡}t|||ƒq| ¡|_dS)NzGNU.sparse.namer%rIr'zGNU.sparse.realsizerr÷)	r ÚsetattrrIÚ
PAX_FIELDSÚPAX_NUMBER_FIELDSrKr1r
rí)r‚rír6r7r!r"r8r8r9rC9s"

zTarInfo._apply_pax_infocCs4z| |d¡WStk
r.| ||¡YSXdS)NrE)r=ÚUnicodeDecodeError)r‚r"r6Zfallback_encodingZfallback_errorsr8r8r9rQPszTarInfo._decode_pax_fieldcCs"t|tƒ\}}|r|d7}|tS)Nr#)r]rÇ)r‚r,rcrdr8r8r9rBXszTarInfo._blockcCs
|jtkSr0)réÚ
REGULAR_TYPESr‡r8r8r9r@asz
TarInfo.isregcCs| ¡Sr0)r@r‡r8r8r9ÚisfileeszTarInfo.isfilecCs
|jtkSr0)rérør‡r8r8r9r0isz
TarInfo.isdircCs
|jtkSr0)réÚSYMTYPEr‡r8r8r9Úissymmsz
TarInfo.issymcCs
|jtkSr0)réÚLNKTYPEr‡r8r8r9Úislnkqsz
TarInfo.islnkcCs
|jtkSr0)réÚCHRTYPEr‡r8r8r9Úischrusz
TarInfo.ischrcCs
|jtkSr0)réÚBLKTYPEr‡r8r8r9Úisblkysz
TarInfo.isblkcCs
|jtkSr0)réÚFIFOTYPEr‡r8r8r9Úisfifo}szTarInfo.isfifocCs
|jdk	Sr0)rár‡r8r8r9ÚissparseszTarInfo.issparsecCs|jtttfkSr0)rérgrirkr‡r8r8r9Úisdev„sz
TarInfo.isdev)rŒ)1rorprqÚdictÚ	__slots__r…Úpropertyr%Úsetterr&rõrúrrrÿrürýrþÚclassmethodrrÚstaticmethodrrrrr8r:r9r?r;r<r>rTrSrUrCrQrBr@rbr0rdrfrhrjrlrmrnr8r8r8r9rÊs’è





1


	

2
>

h	c
@s°eZdZdZdZdZdZeZe	Z
dZeZ
eZd[dd„Zedddefd	d
„ƒZed\dd„ƒZed]dd„ƒZed^dd„ƒZed_dd„ƒZdddddœZdd„Zdd„Zdd„Zdd „Zd`d!d"„Zdadd$œd%d&„Zdbdd'œd(d)„Zdcd*d+„Z dddd-œd.d/„Z!dedd-œd1d2„Z"d3d4„Z#dfd5d6„Z$d7d8„Z%d9d:„Z&d;d<„Z'd=d>„Z(d?d@„Z)dAdB„Z*dCdD„Z+dEdF„Z,dGdH„Z-dIdJ„Z.dgdKdL„Z/dMdN„Z0dhdOdP„Z1dQdR„Z2dSdT„Z3dUdV„Z4dWdX„Z5dYdZ„Z6dS)irrFr#Nrxrûc
Csªdddddœ}||krtdƒ‚||_|||_|sh|jdkrTtj |¡sTd|_d|_t||jƒ}d	|_n@|dkrt|d
ƒrt	|j
ttfƒr|j
}t|dƒr¢|j|_d|_|r¸tj 
|¡nd|_
||_|dk	rÒ||_|dk	rà||_|dk	rî||_|dk	rü||_|dk	r||_|	|_|
dk	r0|jtkr0|
|_ni|_|dk	rF||_|dk	rV||_|
|_d	|_g|_d	|_|j ¡|_i|_zþ|jd
kržd|_ | !¡|_ |jdkr2|j "|j¡z|j #|¡}|j $|¡WnXt%k
rþ|j "|j¡Yq2Yn0t&k
r,}zt't|ƒƒ‚W5d}~XYnXqª|jdkr|d|_|jr||j (|j )¡¡}|j *|¡|jt+|ƒ7_Wn&|js˜|j ,¡d|_‚YnXdS)NÚrbzr+bÚwbZxb©rxÚaryrZú!mode must be 'r', 'a', 'w' or 'x'rxryFrƒr„Trx©rxryrZ)-rKr„Ú_moder{r%ÚexistsÚ	bltn_openr•r€rrƒrrPÚabspathr™rTräÚdereferenceÚignore_zerosr6r7rríÚdebugÚ
errorlevelÚcopybufsizer›ÚmembersÚ_loadedr¾rÌÚinodesÚfirstmemberrEr¿r:rÂrtrrrr
r_r2r†)r‚rƒr„r™rTrärr€r6r7rírr‚rƒZmodesÚerXr8r8r9r…£sŠ
ÿ





"
zTarFile.__init__c

sº|s|stdƒ‚|dkrª‡fdd„}tˆj|dD]j}tˆˆj|ƒ}|dk	rV| ¡}	z||d|f|ŽWSttfk
rš|dk	r’| |	¡Yq2Yq2Xq2tdƒ‚nd|kr| dd	¡\}
}|
pÊd}
|pÒd
}|ˆjkrðtˆˆj|ƒ}ntd|ƒ‚|||
|f|ŽSd|kr’| dd	¡\}
}|
p.d}
|p8d
}|
d
krLtdƒ‚t	||
|||ƒ}zˆ||
|f|Ž}Wn| 
¡‚YnXd|_|S|dkr®ˆj|||f|ŽStdƒ‚dS)Nznothing to open)rxúr:*csˆj|dkS)NÚtaropen)Ú	OPEN_METH)r˜©rr8r9Únot_compressed<sz$TarFile.open.<locals>.not_compressed©Úkeyrxz%file could not be opened successfullyú:r#r“r”ú|rwzmode must be 'r' or 'w'Frzzundiscernible mode)
rKÚsortedr‹rir¾rrr¿rrŠr†r•rŠ)
rrƒr„r™rbÚkwargsrr˜ÚfuncZ	saved_posÚfilemodeÚstreamrÆr8rŒr9rsP%







zTarFile.opencKs |dkrtdƒ‚||||f|ŽS)Nrwry)rK)rrƒr„r™r“r8r8r9rŠmszTarFile.taropenr©cKsè|dkrtdƒ‚zddlm}Wntk
r<tdƒ‚YnXz|||d||ƒ}Wn.tk
r‚|dk	r||dkr|tdƒ‚‚YnXz|j|||f|Ž}WnBtk
rÈ| ¡|dkrÂtdƒ‚‚Yn| ¡‚YnXd	|_	|S)
N©rxryrZúmode must be 'r', 'w' or 'x'r)ÚGzipFilezgzip module is not availablererxr¶F)
rKZgzipr™rrr¥rrŠr†r•)rrƒr„r™Ú
compresslevelr“r™rÆr8r8r9Úgzopenus0zTarFile.gzopenc	Ks¸|dkrtdƒ‚zddlm}Wntk
r<tdƒ‚YnX||pF|||d}z|j|||f|Ž}WnFttfk
r˜| ¡|dkr’t	dƒ‚‚Yn| ¡‚YnXd	|_
|S)
Nr—r˜r)ÚBZ2Filer)ršrxznot a bzip2 fileF)rKrrœrrrŠr¥ÚEOFErrorr†rr•)rrƒr„r™ršr“rœrÆr8r8r9Úbz2open–s&zTarFile.bz2openc		Ks¼|dkrtdƒ‚zddlm}m}Wntk
r@tdƒ‚YnX||pJ|||d}z|j|||f|Ž}WnF|tfk
rœ| ¡|dkr–t	dƒ‚‚Yn| ¡‚YnXd	|_
|S)
Nr—r˜r)ÚLZMAFiler§r’)Úpresetrxznot an lzma fileF)rKr¦rŸr§rrrŠrr†rr•)	rrƒr„r™r r“rŸr§rÆr8r8r9Úxzopen²s&zTarFile.xzopenrŠr›ržr¡)r“rŽrr‘cCsˆ|jr
dSd|_z`|jdkrn|j ttd¡|jtd7_t	|jt
ƒ\}}|dkrn|j tt
|¡W5|js‚|j ¡XdS)NTrzr$r)r›r•r™r†r„r_r3rÇrÌr]Ú
RECORDSIZE)r‚rcrdr8r8r9r†Ùs
z
TarFile.closecCs"| |¡}|dkrtd|ƒ‚|S)Nzfilename %r not found)Ú
_getmemberÚKeyError)r‚rƒrär8r8r9Ú	getmemberîs
zTarFile.getmembercCs| ¡|js| ¡|jSr0)Ú_checkr…Ú_loadr„r‡r8r8r9Ú
getmembersùszTarFile.getmemberscCsdd„| ¡DƒS)NcSsg|]
}|j‘qSr8rò)rYrär8r8r9r[sz$TarFile.getnames.<locals>.<listcomp>)r¨r‡r8r8r9ÚgetnamesszTarFile.getnamescCs^| d¡|dk	r|j}|dkr$|}tj |¡\}}| tjd¡}| d¡}| ¡}||_	|dkr€|j
stt |¡}qŽt |¡}nt 
| ¡¡}d}|j}t |¡rþ|j|jf}	|j
sæ|jdkræ|	|jkræ||j|	kræt}
|j|	}nt}
|	drü||j|	<nht |¡rt}
nVt |¡r"t}
nDt |¡r>t}
t |¡}n(t |¡rPt}
nt  |¡rbt!}
ndS||_||_"|j#|_$|j%|_&|
tkr–|j'|_(nd|_(|j)|_*|
|_+||_,t-räzt- .|j$¡d|_/Wnt0k
râYnXt1rzt1 2|j&¡d|_3Wnt0k
rYnX|
tt!fkrZt4tdƒrZt4tdƒrZt 5|j6¡|_7t 8|j6¡|_9|S)NÚawxr÷rŒr#rÚmajorÚminor):r¦rƒr{r%Ú
splitdriver­ÚsepÚlstriprärãrÚlstatÚstatÚfstatÚfilenoÚst_modeÚS_ISREGÚst_inoÚst_devÚst_nlinkr†rerðÚS_ISDIRrøÚS_ISFIFOrkÚS_ISLNKrcÚreadlinkÚS_ISCHRrgÚS_ISBLKrir„Úst_uidr)Úst_gidr*Úst_sizer'Úst_mtimer(rérêÚpwdÚgetpwuidr+r¤ÚgrpZgetgrgidr,r€r«Úst_rdevrër¬rì)r‚rƒÚarcnamer™ZdrvräZstatresrêZstmdÚinoderér8r8r9Ú
gettarinfo	s„	


ÿÿ

zTarFile.gettarinfoT)r„cCsú| ¡|dkr|}|D]Ü}|r¤tt |j¡ƒtd|jp>|j|jpH|jfƒ| 	¡s`| 
¡rztdd|j|jfƒntd|j
ƒtdt |j¡dd…ƒt|j| ¡r¶dndƒ|rî| ¡rØtd	|jƒ| ¡rîtd
|jƒtƒqdS)Nz%s/%sz%10sz%d,%dz%10dz%d-%02d-%02d %02d:%02d:%02dr¸r÷rŒz-> zlink to )r¦rmr±r•r„r+r)r,r*rhrjrërìr'r°Ú	localtimer(rƒr0rdrêrfrl)r‚Úverboser„rär8r8r9rWls0
ÿÿÿzTarFile.list©Úfilterc	Cs6| d¡|dkr|}|jdk	rFtj |¡|jkrF| dd|¡dS| d|¡| ||¡}|dkrz| dd|¡dS|dk	r¦||ƒ}|dkr¦| dd|¡dS| ¡rÒt|dƒ}| 	||¡W5QRXn`| 
¡r(| 	|¡|r2tt |¡ƒD]*}|j
tj ||¡tj ||¡||dqún
| 	|¡dS)	Nrªr$ztarfile: Skipped %rr#ztarfile: Unsupported type %rztarfile: Excluded %rrurÌ)r¦rƒr{r%r~Ú_dbgrÉr@r}Úaddfiler0r’ÚlistdirÚaddrÃ)r‚rƒrÇÚ	recursiverÍräÚfr8r8r9rÑŒs8



ÿ
zTarFile.addcCs¾| d¡t |¡}| |j|j|j¡}|j |¡|jt	|ƒ7_|j
}|dk	r®t||j|j|dt
|jtƒ\}}|dkrœ|j tt|¡|d7}|j|t7_|j |¡dS)Nrª)rbrr#)r¦r
rÿrTr6r7r™r_rÌr2rƒr\r'r]rÇr3r„rÂ)r‚rär™rXrbrcrdr8r8r9rÏ¿s

zTarFile.addfileÚ.©Ú
numeric_ownercCsøg}|dkr|}|D]>}| ¡r:| |¡t |¡}d|_|j||| ¡|dq|jdd„d| ¡|D]‚}tj 	||j
¡}z,|j|||d| ||¡| 
||¡Wqptk
rð}z"|jdkrЂn| dd|¡W5d}~XYqpXqpdS)	NéÀ©Ú	set_attrsrÖcSs|jSr0rò)rxr8r8r9Ú<lambda>ðrz$TarFile.extractall.<locals>.<lambda>rŽrÕr#útarfile: %s)r0rÂr
r„ÚextractÚsortÚreverser{r%rÃrƒÚchownÚutimeÚchmodr
r‚rÎ)r‚r%r„rÖZdirectoriesräÚdirpathrˆr8r8r9Ú
extractallØs.

ÿ
zTarFile.extractallrŒc
Cs| d¡t|tƒr | |¡}n|}| ¡r>tj ||j¡|_	z"|j
|tj ||j¡||dWn¦tk
rÆ}zH|j
dkr€‚n6|jdkrž| dd|j¡n| dd|j|jf¡W5d}~XYnBtk
r}z"|j
dkræ‚n| dd|¡W5d}~XYnXdS)NrxrØrr#rÛztarfile: %s %r)r¦rrr¥rfr{r%rÃrêrïÚ_extract_memberrƒr¥r‚ÚfilenamerÎÚstrerrorr
)r‚Úmemberr%rÙrÖrärˆr8r8r9rÜs*	

þ


(
zTarFile.extractcCs‚| d¡t|tƒr | |¡}n|}| ¡s6|jtkrB| ||¡S| ¡sR| 	¡rzt|j
tƒrhtdƒ‚q~| 
| |¡¡SndSdS)Nrxz'cannot extract (sym)link as file object)r¦rrr¥r@rérAÚ
fileobjectrfrdr™rŠr	ÚextractfileÚ_find_link_target)r‚rçrär8r8r9ré&s


zTarFile.extractfilecCsT| d¡}| dtj¡}tj |¡}|r>tj |¡s>t |¡| ¡sN| 	¡rh| 
dd|j|jf¡n| 
d|j¡| 
¡rŒ| ||¡nŽ| ¡r¢| ||¡nx| ¡r¸| ||¡nb| ¡sÈ| ¡rÖ| ||¡nD| ¡sæ| 	¡rô| ||¡n&|jtkr| ||¡n| ||¡|rP| |||¡| 	¡sP| ||¡| ||¡dS)Nr÷r#z%s -> %s)r1r­r{r®r%Údirnamer|ÚmakedirsrfrdrÎrƒrêr@Úmakefiler0ÚmakedirrlÚmakefiforhrjÚmakedevÚmakelinkrérAÚmakeunknownrßrárà)r‚räÚ
targetpathrÙrÖZ	upperdirsr8r8r9räEs4


zTarFile._extract_membercCs*zt |d¡Wntk
r$YnXdS)Nr×)r{ÚmkdirÚFileExistsError©r‚rärór8r8r9rîvszTarFile.makedirc	CsŽ|j}| |j¡|j}t|dƒb}|jdk	rn|jD]"\}}| |¡t|||t|ƒq4| |j¡| 	¡nt|||jt|ƒW5QRXdS)Nrv)
r™r¿ràrƒr}rár\rr'Útruncate)r‚räróÚsourcerbÚtargetrÌr'r8r8r9rí€s


zTarFile.makefilecCs"| ||¡| dd|j¡dS)Nr#z9tarfile: Unknown file type %r, extracted as regular file.)rírÎrérör8r8r9ròsÿzTarFile.makeunknowncCs"ttdƒrt |¡ntdƒ‚dS)NÚmkfifozfifo not supported by system)r€r{rúr
rör8r8r9rï˜s
zTarFile.makefifocCs^ttdƒrttdƒstdƒ‚|j}| ¡r6|tjO}n
|tjO}t ||t 	|j
|j¡¡dS)NÚmknodrðz'special devices not supported by system)r€r{r
r„rjr±ÚS_IFBLKÚS_IFCHRrûrðrërì)r‚rärór„r8r8r9rð s
ÿzTarFile.makedevcCs°zb| ¡r0tj |¡r t |¡t |j|¡n0tj |j¡rNt 	|j|¡n| 
| |¡|¡WnHtk
rªz| 
| |¡|¡Wnt
k
r¤tdƒ‚YnXYnXdS)Nz%unable to resolve link inside archive)rdr{r%ÚlexistsÚunlinkÚsymlinkrêr|rïÚlinkrärêÚsymlink_exceptionr¤r
rör8r8r9rñ¯s"
ÿÿzTarFile.makelinkcCsØttdƒrÔt ¡dkrÔ|j}|j}|s‚ztr<t |j¡d}Wntk
rRYnXzt	rjt	 
|j¡d}Wntk
r€YnXz4| ¡r¦ttdƒr¦t 
|||¡nt |||¡Wntk
rÒtdƒ‚YnXdS)NÚgeteuidrr$Úlchownzcould not change owner)r€r{rr*r)rÅZgetgrnamr,r¤rÃÚgetpwnamr+rdrrßr¥r
)r‚rärórÖÚgÚur8r8r9rßÉs(z
TarFile.chowncCs4zt ||j¡Wntk
r.tdƒ‚YnXdS)Nzcould not change mode)r{rár„r¥r
rör8r8r9ráæsz
TarFile.chmodcCsHttdƒsdSzt ||j|jf¡Wntk
rBtdƒ‚YnXdS)Nràz"could not change modification time)r€r{ràr(r¥r
rör8r8r9ràîs
z
TarFile.utimec
Csð| d¡|jdk	r$|j}d|_|S|j|j ¡krZ|j |jd¡|j d¡sZtdƒ‚d}z|j 	|¡}WqÎt
k
rÆ}z6|jr´| dd|j|f¡|jt
7_WY¢q^W5d}~XYqÎtk
r6}zR|jr| dd|j|f¡|jt
7_WY¢ q^n|jdkr&tt|ƒƒ‚W5d}~XYn’tk
r^|jdkrZtdƒ‚Ynjtk
r˜}z|jdkrˆtt|ƒƒ‚W5d}~XYn0tk
rÆ}ztt|ƒƒ‚W5d}~XYnXqÎq^|dk	ræ|j |¡nd|_|S)	NZrar#rZr$z0x%X: %srz
empty fileT)r¦r‡rÌr™r¾r¿r^rrär:rtr€rÎrÇrLrrrrsrur„rÂr…)r‚Úmrärˆr8r8r9rEùsJ



zTarFile.nextcCsn| ¡}|dk	r"|d| |¡…}|r2tj |¡}t|ƒD].}|rRtj |j¡}n|j}||kr:|Sq:dSr0)r¨Úindexr{r%ÚnormpathÚreversedrƒ)r‚rƒräÚ	normalizer„rçÚmember_namer8r8r9r£/	szTarFile._getmembercCs| ¡}|dkrqqd|_dSrÐ)rEr…)r‚rär8r8r9r§F	sz
TarFile._loadcCs:|jrtd|jjƒ‚|dk	r6|j|kr6td|jƒ‚dS)Nz%s is closedzbad operation for mode %r)r›r¥ræror„)r‚r„r8r8r9r¦P	szTarFile._checkcCs`| ¡r.d tdtj |j¡|jfƒ¡}d}n
|j}|}|j||dd}|dkr\t	d|ƒ‚|S)Nr÷T)rärzlinkname %r not found)
rdrÃrÍr{r%rërƒrêr£r¤)r‚rärêÚlimitrçr8r8r9rêY	s zTarFile._find_link_targetccsŠ|jr|jEdHdSd}|jdk	r:| ¡}|d7}|V|t|jƒkrT|j|}n"|jsr| ¡}|svd|_dSndS|d7}|Vq:dS)Nrr#T)r…r„r‡rEr2)r‚r	rär8r8r9Ú__iter__l	s$
zTarFile.__iter__cCs||jkrt|tjddS)N©Úfile)rrlrjÚstderr)r‚ÚlevelÚmsgr8r8r9r΋	s
zTarFile._dbgcCs| ¡|Sr0)r¦r‡r8r8r9Ú	__enter__‘	szTarFile.__enter__cCs,|dkr| ¡n|js"|j ¡d|_dSrÐ)r†r•r™r›)r‚rér"Ú	tracebackr8r8r9Ú__exit__•	s


zTarFile.__exit__)
NrxNNNNNNrûNNNN)rxN)rxNr©)rxNr©)rxNN)NNN)T)NT)N)rÔN)rŒT)TF)NF)N)7rorprqrrr€r‚rrTrr6r7rrärßrèr…rsr¢rrŠr›ržr¡r‹r†r¥r¨r©rÉrWrÑrÏrãrÜrérärîríròrïrðrñrßráràrEr£r§r¦rêrrÎrrr8r8r8r9r‰s†ý
oZ ü


c 3
(&ÿ
1
6


	cCs2zt|ƒ}| ¡WdStk
r,YdSXdS)NTF)rr†r)rƒrÆr8r8r9r¢	sc	CsÒddl}d}|j|d}|jdddddd	|jd
d}|jdd
ddd|jdddddd|jdddddd|jddddd| ¡}|jdk	r|j}t|ƒrìt|dƒ }| ¡t	| ¡t
jdW5QRX|jrþt	d  
|¡ƒn| d!d" 
|¡¡nÌ|jdk	r\|j}t|ƒrFt |d#¡}|j|jd$W5QRXn| d!d" 
|¡¡nr|jdk	r,t|jƒd!krŠ|jd}tj}n,t|jƒd%kr¦|j\}}n| d!| ¡¡t|ƒrt |d#¡}|j|d&W5QRX|jr*|d'krd( 
|¡}	nd) 
||¡}	t	|	ƒn| d!d" 
|¡¡n¢|jdk	rÎ|j d¡}
tj |
¡\}}d*d*d+d+d,d,d,d,d-œ}
||
kr€d.|
|nd/}|j}t |
|¡}|D]}| |¡qœW5QRX|jrÎt	d0 
|
¡ƒdS)1Nrz3A simple command-line interface for tarfile module.)Údescriptionz-vz	--verboseÚ
store_trueFzVerbose output)ÚactionÚdefaultÚhelpT)Zrequiredz-lz--listú	<tarfile>zShow listing of a tarfile)Úmetavarrz-ez	--extractú+)rz<output_dir>zExtract tarfile into target dir)Únargsrrz-cz--create)z<name>z<file>zCreate tarfile from sourcesz-tz--testzTest if a tarfile is validrxrz{!r} is a tar archive.r#z{!r} is not a tar archive.
r‰)rËr$)r%rÔz{!r} file is extracted.z+{!r} file is extracted into {!r} directory.rŽr‘r)r«z.tgzz.xzz.txzz.bz2z.tbzz.tbz2z.tb2zw:ryz{!r} file created.)ÚargparseÚArgumentParserÚadd_argumentZadd_mutually_exclusive_groupÚ
parse_argsZtestrrr¨rlrjrrËrTÚexitrWrrÜr2r{ÚcurdirZformat_helprãZcreateÚpopr%ÚsplitextrÑ)r!rÚparserrMÚargsr`r“Ztfr&rZtar_nameÚ_ZextZcompressionsZtar_modeZ	tar_filesÚ	file_namer8r8r9Úmain°	s–ÿ
ÿ
þ
þ
ÿ



ÿ
õ
r-Ú__main__)]ÚversionÚ
__author__Ú__credits__Úbuiltinsrr}rjr{rÔr[r±r°rWr
rKrÃrrÅÚAttributeErrorÚNotImplementedErrorrr¥Ú	NameErrorÚ__all__r3rÇr¢rrrrrrðr-rercrgrirørkZCONTTYPEr
r	r.rrr=r
rrrrArar2r^rRrrIr_rƒrÚgetfilesystemencodingr:r?rOrUrYr\rmÚ	Exceptionrr
rrr	rrrrsrtrLrurvrŠÚobjectr–rËÚBufferedReaderrßrrrr-ror8r8r8r9Ú<module> s


ýüÿÿú
shD!W

Back to Directory File Manager