ROOTPLOIT
Server: LiteSpeed
System: Linux server71.web-hosting.com 4.18.0-513.18.1.lve.el8.x86_64 #1 SMP Thu Feb 22 12:55:50 UTC 2024 x86_64
User: niphet (1079)
PHP: 5.3.29
Disabled: NONE
Upload Files
File: //usr/lib64/python3.6/__pycache__/tarfile.cpython-36.opt-2.pyc
3

i'@s>dZdZdZdZdZddlmZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZyddlZWnek
rdZYnXyddlZWnek
rdZYnXeefZyeef7ZWnek
rYnXdd	d
ddd
dddddddddgZdZdZdZdZedZdZ dZ!dZ"dZ#dZ$d Z%dZ&d!Z'd"Z(d#Z)d$Z*d%Z+d&Z,d'Z-d(Z.d)Z/d*Z0d+Z1d,Z2d-Z3dZ4d.Z5d/Z6e5Z7e%e&e'e(e+e,e-e)e*e.e/e0fZ8e%e&e-e0fZ9e.e/e0fZ:dZ;d0d1d6d7hZ<e=e=e=e>e>e>d8Z?e	j@d9krd:ZAnejBZAd;d<ZCd=d>ZDd?d@ZEdAe7fdBdCZFdDdEZGdedfdFdGZHdHdIZIdJdKZJGdLddeKZLGdMddeLZMGdNddeLZNGdOd
d
eLZOGdPddeLZPGdQddeLZQGdRdSdSeQZRGdTdUdUeQZSGdVdWdWeQZTGdXdYdYeQZUGdZd[d[eQZVGd\d]d]ZWGd^d_d_ZXGd`dadaeYZZGdbdcdceYZ[Gdddedee
j\Z]GdfdgdgeLZ^Gdhdidie^Z_Gdjdkdke^Z`Gdldmdme^ZaGdndodoe^ZbGdpdqdqe^ZcGdrdsdse^Zde^eeMfZeddtduZfdvdwZgdxdyZhdzd{Ziegeheid|ZjeYZkejld}ZmGd~d	d	eYZnGdddeYZodd
ZpeojZddZqerdkr:eqdS)z0.9.0u"Lars Gustäbel (lars@gustaebel.de)z5$Date: 2011-02-25 17:42:01 +0200 (Fri, 25 Feb 2011) $z?$Id: tarfile.py 88586 2011-02-25 15:42:01Z marc-andre.lemburg $u4Gustavo Niemeyer, Niels Gustäbel, Richard Townsend.)openNTarFileTarInfo
is_tarfileTarError	ReadErrorCompressionErrorStreamErrorExtractErrorHeaderErrorENCODINGUSTAR_FORMAT
GNU_FORMAT
PAX_FORMATDEFAULT_FORMATrTz/etc/python/tarfile.cfgisustar  sustar00d01234567LKSxgXpathlinkpathsizemtimeuidgidunamegname)ZatimeZctimer(r)r*r'ntzutf-8cCs8|dkrtd|j||}|d||t|tS)Nzmetadata cannot contain None)
ValueErrorencodelenNUL)slengthencodingerrorsr6/usr/lib64/python3.6/tarfile.pystnsr8cCs*|jd}|dkr|d|}|j||S)Nrr#)finddecode)r2r4r5pr6r6r7ntss
r=cCs|ddkrfd}x0tt|dD]}|dK}|||d7}q"W|ddkrdt|d|}n@y"t|dd}t|jpd	d}Wntk
rtd
YnX|S)Nrr#asciistrict0zinvalid header)r>r?)ranger0r=intstripr.InvalidHeaderError)r2nir6r6r7ntisrKr@cCst|}d|ko"d|dknrDtd|d|fdt}n|tkrd|d|kopd|dknr|dkrtdg}ntdg}d||}x6t|dD]}|jd|d@|dL}qWntd	|S)
Nrr@r#z%0*orBrAr>r?zoverflow in number field)rFbytesr1r	bytearrayrEinsertr.)rIdigitsformatr2rJr6r6r7itns 2
rQcCs0dttjd|}dttjd|}||fS)NrAZ
148B8x356BZ
148b8x356b)sumstructZunpack_from)bufZunsigned_chksumZ
signed_chksumr6r6r7calc_chksumss	rUc	Cs|pd}|dkrdS|dkr.tj|||dSt||\}}x8t|D],}|j|}t||krh|d|j|qFW|dkr|j|}t||kr|d|j|dS)Nirzunexpected end of datai@)shutilcopyfileobjdivmodrEreadr0write)	srcdstr3	exceptionbufsizeblocks	remainderbrTr6r6r7rXs$


rXcCs ddl}|jdtdtj|S)Nrz$deprecated in favor of stat.filemoder$)warningswarnDeprecationWarningstatfilemode)modercr6r6r7rgsrgcCs8ttjdd}|dk	r(|j|dj|}t|dddS)Nr4backslashreplace )end)getattrsysstdoutr/r;print)r2r4r6r6r7_safe_printsrpc@seZdZdS)rN)__name__
__module____qualname__r6r6r6r7rsc@seZdZdS)r
N)rqrrrsr6r6r6r7r
!sc@seZdZdS)rN)rqrrrsr6r6r6r7r$sc@seZdZdS)rN)rqrrrsr6r6r6r7r'sc@seZdZdS)r	N)rqrrrsr6r6r6r7r	*sc@seZdZdS)rN)rqrrrsr6r6r6r7r-sc@seZdZdS)EmptyHeaderErrorN)rqrrrsr6r6r6r7rt0srtc@seZdZdS)TruncatedHeaderErrorN)rqrrrsr6r6r6r7ru3sruc@seZdZdS)EOFHeaderErrorN)rqrrrsr6r6r6r7rv6srvc@seZdZdS)rHN)rqrrrsr6r6r6r7rH9srHc@seZdZdS)SubsequentHeaderErrorN)rqrrrsr6r6r6r7rw<srwc@s,eZdZddZddZddZddZd	S)

_LowLevelFilecCsFtjtjtjBtjBd|}ttdr2|tjO}tj||d|_dS)N)rwO_BINARYi)	osO_RDONLYO_WRONLYO_CREATO_TRUNChasattrr{rfd)selfnamerhr6r6r7__init__Is

z_LowLevelFile.__init__cCstj|jdS)N)r|closer)rr6r6r7rRsz_LowLevelFile.closecCstj|j|S)N)r|rZr)rr'r6r6r7rZUsz_LowLevelFile.readcCstj|j|dS)N)r|r[r)rr2r6r6r7r[Xsz_LowLevelFile.writeN)rqrrrsrrrZr[r6r6r6r7rxCs	rxc@speZdZddZddZddZddZd	d
ZddZd
dZ	ddZ
dddZdddZddZ
ddZdS)_Streamc	Csd|_|dkrt||}d|_|dkr6t|}|j}|p<d|_||_||_||_||_d|_	d|_
d|_yL|dkryddl}Wnt
k
rtdYnX||_|jd|_|d	kr|j|j|_n|jn|d
kr:yddl}Wnt
k
r
tdYnX|d	kr.d|_|j|_t|_n
|j|_n||dkryddl}Wnt
k
rntd
YnX|d	krd|_|j|_|j|_n
|j|_n|dkrtd|Wn&|js|jjd|_YnXdS)NTF*rgzzzlib module is not availablerybz2zbz2 module is not availablexzzlzma module is not availabletarzunknown compression type %r) _extfileobjrx_StreamProxygetcomptyperrhcomptypefileobjr_rTposclosedzlibImportErrorrcrc32crc
_init_read_gzerrorr^_init_write_gzrdbufZBZ2DecompressorcmpOSErrorZ
BZ2CompressorlzmaZLZMADecompressor	LZMAErrorZLZMACompressorr)	rrrhrrr_rrrr6r6r7rfsl












z_Stream.__init__cCst|dr|jr|jdS)Nr)rrr)rr6r6r7__del__sz_Stream.__del__cCs|jjd|jj|jj|jjd|_tjdtt	j	}|j
d|d|jjdrf|jdd
|_|j
|jj
dd	tdS)N	rz<Lssz.gzz
iso-8859-1replace)rZcompressobjZDEFLATED	MAX_WBITSZ
DEF_MEM_LEVELrrSpackrFtime_Stream__writerendswithr/r1)rZ	timestampr6r6r7rsz_Stream._init_write_gzcCsR|jdkr|jj||j|_|jt|7_|jdkrD|jj|}|j|dS)Nrr)	rrrrrr0rcompressr)rr2r6r6r7r[s

z
_Stream.writecCsR|j|7_x>t|j|jkrL|jj|jd|j|j|jd|_qWdS)N)rTr0r_rr[)rr2r6r6r7Z__writesz_Stream.__writecCs|jr
dSd|_z|jdkr:|jdkr:|j|jj7_|jdkr|jr|jj|jd|_|jdkr|jjtj	d|j
|jjtj	d|jd@Wd|js|jj
XdS)NTrzrrrz<Ll)rrhrrTrflushrr[rSrrrrr)rr6r6r7rs
z
_Stream.closecCs|jj|jj|_d|_|jddkr0td|jddkrFtdt|jd}|jd|d	@rt|jdd
t|jd}|j	||d@rx|jd}|s|t
krPqW|d@rx|jd}|s|t
krPqW|d@r|jddS)
Nrr$sznot a gzip filer#zunsupported compression methodrAr@rV)rZ
decompressobjrrr
_Stream__readrrordrZr1)rflagZxlenr2r6r6r7rs.
 


z_Stream._init_read_gzcCs|jS)N)r)rr6r6r7tellsz_Stream.tellrcCs\||jdkrNt||j|j\}}xt|D]}|j|jq.W|j|ntd|jS)Nrz seeking backwards is not allowed)rrYr_rErZr	)rrr`rarJr6r6r7seeksz_Stream.seekNcCsZ|dkr:g}x |j|j}|s P|j|qWdj|}n
|j|}|jt|7_|S)Nr)_readr_appendjoinrr0)rr'trTr6r6r7rZs
z_Stream.readcCs|jdkr|j|St|j}|jg}xd||kr|j|j}|sBPy|jj|}Wn|jk
rptdYnX|j	||t|7}q(Wdj
|}||d|_|d|S)Nrzinvalid compressed datar)rrr0rr_rZ
decompressr^rrr)rr'crrTr6r6r7r*s"





z
_Stream._readcCsnt|j}|jg}x6||krH|jj|j}|s0P|j||t|7}qWdj|}||d|_|d|S)Nr)r0rTrrZr_rr)rr'rrrTr6r6r7Z__read@s



z_Stream.__read)r)N)rqrrrsrrrr[rrrrrrZrrr6r6r6r7r[sF
	

rc@s,eZdZddZddZddZddZd	S)
rcCs||_|jjt|_dS)N)rrZ	BLOCKSIZErT)rrr6r6r7rVsz_StreamProxy.__init__cCs|jj|_|jS)N)rrZrT)rr'r6r6r7rZZs
z_StreamProxy.readcCsP|jjdrdS|jdddkr8|jdddkr8d	S|jjdrHdSd
SdS)NsrrrsBZhr
s1AY&SYr]7zXZrr)rr)rT
startswith)rr6r6r7r^s$z_StreamProxy.getcomptypecCs|jjdS)N)rr)rr6r6r7rhsz_StreamProxy.closeN)rqrrrsrrZrrr6r6r6r7rQs
rc@sfeZdZdddZddZddZdd	Zd
dZdd
Ze	j
fddZdddZddZ
ddZdS)_FileInFileNcCs||_||_||_d|_t|dd|_d|_|dkr>d|fg}d|_g|_d}|j}xT|D]L\}}||kr~|jj	d||df|jj	d||||f||7}||}qZW||jkr|jj	d||jdfdS)NrrFT)
roffsetr'positionrlrr	map_indexmapr)rrrr'Z	blockinfoZlastposZrealposr6r6r7rus(

z_FileInFile.__init__cCsdS)Nr6)rr6r6r7rsz_FileInFile.flushcCsdS)NTr6)rr6r6r7readablesz_FileInFile.readablecCsdS)NFr6)rr6r6r7writablesz_FileInFile.writablecCs
|jjS)N)rseekable)rr6r6r7rsz_FileInFile.seekablecCs|jS)N)r)rr6r6r7rsz_FileInFile.tellcCs|tjkr tt|d|j|_nj|tjkr\|dkrFt|j|d|_qt|j||j|_n.|tjkrtt|j||jd|_ntd|jS)NrzInvalid argument)	ioSEEK_SETminmaxr'rSEEK_CURSEEK_ENDr.)rrwhencer6r6r7rs


z_FileInFile.seekc	Cs|dkr|j|j}nt||j|j}d}x|dkrxZ|j|j\}}}}||jkob|knrlPq:|jd7_|jt|jkr:d|_q:Wt|||j}|r|jj||j||jj|}t||krt	d||7}n|t
|7}||8}|j|7_q.W|S)Nrrr#zunexpected end of data)r'rrrrr0rrrZrr1)	rr'rTdatastartstoprr3rbr6r6r7rZs.

z_FileInFile.readcCs&|jt|}||dt|<t|S)N)rZr0)rrbrTr6r6r7readintosz_FileInFile.readintocCs
d|_dS)NT)r)rr6r6r7rsz_FileInFile.close)N)N)rqrrrsrrrrrrrrrrZrrr6r6r6r7ros

rcseZdZfddZZS)ExFileObjectcs&t|j|j|j|j}tj|dS)N)rroffset_datar'sparsesuperr)rtarfiletarinfor)	__class__r6r7rs
zExFileObject.__init__)rqrrrsr
__classcell__r6r6)rr7rsrc@seZdZdS)FilterErrorN)rqrrrsr6r6r6r7rsrcseZdZfddZZS)AbsolutePathErrorcs ||_tjd|jddS)Nzmember z has an absolute path)rrrr)rr)rr6r7rszAbsolutePathError.__init__)rqrrrsrrr6r6)rr7rsrcseZdZfddZZS)OutsideDestinationErrorcs.||_||_tj|jd|dddS)Nz would be extracted to z, z which is outside the destination)r_pathrrr)rrr%)rr6r7rsz OutsideDestinationError.__init__)rqrrrsrrr6r6)rr7rsrcseZdZfddZZS)SpecialFileErrorcs||_tj|jddS)Nz is a special file)rrrr)rr)rr6r7rszSpecialFileError.__init__)rqrrrsrrr6r6)rr7rsrcseZdZfddZZS)AbsoluteLinkErrorcs||_tj|jddS)Nz! is a symlink to an absolute path)rrrr)rr)rr6r7rszAbsoluteLinkError.__init__)rqrrrsrrr6r6)rr7rsrcseZdZfddZZS)LinkOutsideDestinationErrorcs.||_||_tj|jd|dddS)Nz would link to z, z which is outside the destination)rrrrr)rrr%)rr6r7rsz$LinkOutsideDestinationError.__init__)rqrrrsrrr6r6)rr7rsrcseZdZfddZZS)LinkFallbackErrorcs2||_||_tjd|jdd|ddS)Nzlink z would be extracted as a zcopy of z, which was rejected)rrrrr)rrr%)rr6r7rszLinkFallbackError.__init__)rqrrrsrrr6r6)rr7rsrcCs$i}|j}tjj|tjjd}|jdtjfrH|jjdtj}|d<tjj|r\t	|tjjtjj
||tjjd}tjj||g|krt|||j
}|dk	r|d@}|r|js|jr|d@s|dM}|dO}n|js|jrd}nt|||j
kr||d<|r |jdk	r,d|d	<|jdk	r@d|d
<|jdk	rTd|d<|jdk	rhd|d<|js||jr tjj|jrt|tjj|j}||jkr||d
<|jrtjj
|tjj||j}ntjj
||j}tjj|tjjd}tjj||g|kr t|||S)N)rC/ri@Iirhr)r*r+r,linknamei)rr|r%realpath
ALLOW_MISSINGrseplstripisabsrr
commonpathrrhisregislnkisdirissymrr)r*r+r,rrnormpathdirnamer)member	dest_pathZfor_data	new_attrsrZtarget_pathrhZ
normalizedr6r6r7_get_filtered_attrssd






rcCs|S)Nr6)rrr6r6r7fully_trusted_filterTsrcCs(t||d}|r$|jf|ddiS|S)NFdeep)rr)rrrr6r6r7
tar_filterWsrcCs(t||d}|r$|jf|ddiS|S)NTrF)rr)rrrr6r6r7data_filter]sr)Z
fully_trustedrrs([0-9]{1,20}) c@seZdZdlZdmddZddZddZeeeZddZ	ddZ
ee	e
Zd d!Ze
e
e
e
e
e
e
e
d"e
d#
d$d%Zd&d'Zeed(fd)d*Zd+d,Zd-d.Zd/d0Zed1d2Zd3d4Zed5d6Zed7d8Zed9d:Zed;d<Zed=d>Zed?d@ZdAdBZ dCdDZ!dEdFZ"dGdHZ#dIdJZ$dKdLZ%dMdNZ&dOdPZ'dQdRZ(dSdTZ)dUdVZ*dWdXZ+dYdZZ,d[d\Z-d]d^Z.d_d`Z/dadbZ0dcddZ1dedfZ2dgdhZ3didjZ4dkS)nrrrhr)r*r'r(chksumtyperr+r,devmajordevminorrrpax_headersrr_sparse_structs_link_targetrcCsj||_d|_d|_d|_d|_d|_d|_t|_d|_	d|_
d|_d|_d|_
d|_d|_d|_i|_dS)Nirr)rrhr)r*r'r(rREGTYPErrr+r,rrrrrr)rrr6r6r7rs"zTarInfo.__init__cCs|jS)N)r)rr6r6r7_getpathszTarInfo._getpathcCs
||_dS)N)r)rrr6r6r7_setpathszTarInfo._setpathcCs|jS)N)r)rr6r6r7_getlinkpathszTarInfo._getlinkpathcCs
||_dS)N)r)rrr6r6r7_setlinkpathszTarInfo._setlinkpathcCsd|jj|jt|fS)Nz<%s %r at %#x>)rrqrid)rr6r6r7__repr__szTarInfo.__repr__T)
rr(rhrr)r*r+r,r_KEEPc
Cs|	rtj|}n
tj|}||
k	r(||_||
k	r6||_||
k	rD||_||
k	rR||_||
k	r`||_||
k	rn||_||
k	r|||_||
k	r||_	|S)N)
copydeepcopyrr(rhrr)r*r+r,)rrr(rhrr)r*r+r,rr	resultr6r6r7rs(
zTarInfo.replacecCs|jdkrd}n
|jd@}|j||j|j|j|j|j|j|j|j	|j
|j|jd
}|dt
kr~|djdr~|dd7<|S)Ni)
rrhr)r*r'r(rrrr+r,rrrrr)rhrr)r*r'r(rrrr+r,rrDIRTYPEr)rrhinfor6r6r7get_infos&


zTarInfo.get_infosurrogateescapecCs~|j}x(|jD]\}}|dkrtd|qW|tkrH|j|||S|tkr^|j|||S|tkrr|j||StddS)Nz%s may not be Nonezinvalid format)	ritemsr.r
create_ustar_headerrcreate_gnu_headerrcreate_pax_header)rrPr4r5rrvaluer6r6r7tobufsz
TarInfo.tobufcCsnt|d<t|dj||tkr(tdt|dj||tkr^|j|d||\|d<|d<|j|t||S)Nmagicrzlinkname is too longrprefix)	POSIX_MAGICr0r/LENGTH_LINKr.LENGTH_NAME_posix_split_name_create_headerr
)rrr4r5r6r6r7rszTarInfo.create_ustar_headercCst|d<d}t|dj||tkr<||j|dt||7}t|dj||tkrl||j|dt||7}||j|t	||S)Nrrrr)
	GNU_MAGICr0r/r_create_gnu_long_headerGNUTYPE_LONGLINKrGNUTYPE_LONGNAMErr)rrr4r5rTr6r6r7rszTarInfo.create_gnu_headerc
Cs4t|d<|jj}xddtfddtfddfD]h\}}}||kr@q,y||jd	d
Wn"tk
rv||||<w,YnXt|||kr,||||<q,WxldD]d\}}||krd||<q||}d|kod|dknst|t	rt
|||<d||<qW|r|j|t|}	nd}	|	|j
|td	dS)Nrrr%rr&r+ r,rBrCr)r@r*r'r(rr#rr)r+r+r")r,r,r"r)r@r*r@r'r#r(r#)r$r%r&r')rrr
rrr/UnicodeEncodeErrorr0
isinstancefloatstr_create_pax_generic_headerXHDTYPErr
)
rrr4rrZhnamer3rOvalrTr6r6r7rs4
.zTarInfo.create_pax_headercCs|j|tdS)Nzutf-8)r,XGLTYPE)clsrr6r6r7create_pax_global_header?sz TarInfo.create_pax_global_headercCs|jd}xltdt|D]R}dj|d|}dj||d}t|j||tkrt|j||tkrPqWtd||fS)Nrr#zname is too long)splitrEr0rr/
LENGTH_PREFIXrr.)rrr4r5Z
componentsrJrr6r6r7rEs
zTarInfo._posix_split_namecCs|jdttfk}|r@t|jddd|}t|jddd|}ntdd||}tdd||}|jdt}|dkrxtdt|jddd	||t|jd
dd@d|t|jddd|t|jd
dd|t|jddd|t|jddd|d|t|jddd	|||jdtt|jddd||t|jddd||t|jddd|t|jddd|t|jddd||g}tj	dt
dj|}	t|	t
dd}
|	ddt
d|
d|	d d}	|	S)!Nrrrr@rrzTarInfo.type must not be Nonerrrhir)r*r'r#r(s        rrr+r"r,rrz%dsrilz%06orBieii)getCHRTYPEBLKTYPErQr8rr.rrSrrrrUrL)rrPr4r5Zhas_device_fieldsrrZfiletypepartsrTrr6r6r7rUs8
&zTarInfo._create_headercCs.tt|t\}}|dkr*|t|t7}|S)Nr)rYr0rr1)Zpayloadr`rar6r6r7_create_payloadszTarInfo._create_payloadcCsR|j||t}i}d|d<||d<t||d<t|d<|j|t|||j|S)Nz
././@LongLinkrrr'r)r/r1r0rrr
r8)r0rrr4r5rr6r6r7rszTarInfo._create_gnu_long_headercCs:d}x@|jD]4\}}y|jddWqtk
r@d}PYqXqWd}|rV|d7}x|jD]\}}|jd}|r|j|d}n
|jd}t|t|d}d	}	}
x"|tt|
}	|	|
krP|	}
qW|tt|
d
d|d|d
7}q`Wi}d|d<||d<t||d<t|d<|j|td
d|j	|S)NFzutf-8rCTrs21 hdrcharset=BINARY
rrrrB =
z././@PaxHeaderrrr'rr)
rr/r(r0r+rLrrr
r8)r0rrr4ZbinarykeywordrZrecordslrIr<rr6r6r7r,s<

*z"TarInfo._create_pax_generic_headercCstt|dkrtdt|tkr(td|jttkr>tdt|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|jjdrt|_|jtkr6d}g}xrtdD]f}	y0t|||d}
t||d|d}Wntk
rPYnX|j|
|f|d7}qWt|d}t|dd}
|||
f|_ |j!rN|jj"d|_|rp|jt#krp|d|j|_|S)Nrzempty headerztruncated headerzend of file headerzbad checksumrlt|ii	i)iIiQiYirirr#iii)$r0rtrrucountr1rvrKrUrHr=rrhr)r*r'r(rrrr+r,rrAREGTYPErr
GNUTYPE_SPARSErEr.rboolrrrstrip	GNU_TYPES)r0rTr4r5robjrrstructsrJrnumbytes
isextendedorigsizer6r6r7frombufsZ
zTarInfo.frombufcCs8|jjt}|j||j|j}|jjt|_|j|S)N)	rrZrrQr4r5rr_proc_member)r0rrTrLr6r6r7fromtarfileszTarInfo.fromtarfilecCsT|jttfkr|j|S|jtkr,|j|S|jtttfkrF|j	|S|j
|SdS)N)rr!r 
_proc_gnulongrH_proc_sparser-r/SOLARIS_XHDTYPE	_proc_pax
_proc_builtin)rrr6r6r7rR!s



zTarInfo._proc_membercCsR|jj|_|j}|js$|jtkr4||j|j7}||_|j	|j
|j|j|S)N)
rrrrrSUPPORTED_TYPES_blockr'r_apply_pax_inforr4r5)rrrr6r6r7rX.szTarInfo._proc_builtincCs|jj|j|j}y|j|}Wntk
r>tdYnX|j|_|jt	krft
||j|j|_
n|jtkrt
||j|j|_|S)Nz missing or bad subsequent header)rrZrZr'rSrrwrrr!r=r4r5rr r)rrrTnextr6r6r7rT?s

zTarInfo._proc_gnulongc
Cs|j\}}}|`x|r|jjt}d}xvtdD]j}y0t|||d}t||d|d}	Wntk
rzPYnX|r|	r|j||	f|d7}q0Wt|d}qW||_	|jj
|_|j|j|j
|_||_
|S)Nrr#rEi)rrrZrrErKr.rrIrrrrZr'r)
rrrMrOrPrTrrJrrNr6r6r7rUUs(zTarInfo._proc_sparsecCs|jj|j|j}|jtkr&|j}n
|jj}d}d}g}x0t||koV||dkrnt	j
||}|srtdyt|j
d}Wntk
rtdYnX|dkrtd||t|krtd|jd|d}	||jdd|	}
|
jd\}}}
|s"|dks"||	dkr*td|j|||
f|dkrd|dkrd|
dkr`|j}nd	}||7}q@W|dkr~d	}x`|D]X\}}}
|j|d	d	|j}|tkr|j|
||j|j}n|j|
d	d	|j}|||<qWy|j|}Wntk
rtd
YnXd|kr&|j||nFd|kr>|j||n.|jd
dkrl|jddkrl|j||||jttfkr|j ||j|j|j!|_!d|kr|j"}|j#s|jt$kr||j|j7}||_!|S)Nrzinvalid headerr#r:rs
hdrcharsetsBINARYzutf-8z missing or bad subsequent headerzGNU.sparse.mapzGNU.sparse.sizezGNU.sparse.major1zGNU.sparse.minorrDr')%rrZrZr'rr/rr
r0_header_length_prefix_rematchrHrFgroupr.rrk	partitionrr4_decode_pax_fieldr5PAX_NAME_FIELDSrSrrw_proc_gnusparse_01_proc_gnusparse_00r4_proc_gnusparse_10r-rVr[rrrrY)rrrTrrr4raw_headersrar3Zheader_value_end_offsetZkeyword_and_valueZraw_keywordZequalsZ	raw_valuer<rr\rr6r6r7rWqsx

 







 
zTarInfo._proc_paxcCsg}g}x|D]\}}}|dkrVy|jt|jWqtk
rRtdYqXq|dkry|jt|jWqtk
rtdYqXqWtt|||_dS)NsGNU.sparse.offsetzinvalid headersGNU.sparse.numbytes)rrFr;r.rHlistzipr)rr\riZoffsetsrN_r<rr6r6r7rgszTarInfo._proc_gnusparse_00cCs@dd|djdD}tt|ddd|ddd|_dS)NcSsg|]}t|qSr6)rF).0xr6r6r7
<listcomp>sz.TarInfo._proc_gnusparse_01.<locals>.<listcomp>zGNU.sparse.map,r$r#)r2rjrkr)rr\rrr6r6r7rfszTarInfo._proc_gnusparse_01cCsd}g}|jjt}|jdd\}}t|}xJt||dkrvd|krV||jjt7}|jdd\}}|jt|q.W|jj|_t	t
|ddd|ddd|_dS)Nr;r#r$)rrZrr2rFr0rrrrjrkr)rr\rrZfieldsrrTZnumberr6r6r7rhszTarInfo._proc_gnusparse_10c
Csx|jD]\}}|dkr(t|d|q
|dkrBt|dt|q
|dkr\t|dt|q
|tkr
|tkryt||}Wntk
rd}YnX|dkr|jd}t|||q
W|j|_dS)NzGNU.sparse.namer%zGNU.sparse.sizer'zGNU.sparse.realsizerr)	rsetattrrF
PAX_FIELDSPAX_NUMBER_FIELDSr.rJr
r)rrr4r5r<rr6r6r7r[s"

zTarInfo._apply_pax_infocCs.y|j|dStk
r(|j||SXdS)NrC)r;UnicodeDecodeError)rrr4Zfallback_encodingZfallback_errorsr6r6r7rd,szTarInfo._decode_pax_fieldcCs2|dkrtdt|t\}}|r*|d7}|tS)Nrzinvalid offsetr#)rHrYr)rrFr`rar6r6r7rZ4szTarInfo._blockcCs
|jtkS)N)r
REGULAR_TYPES)rr6r6r7r@sz
TarInfo.isregcCs|jS)N)r)rr6r6r7isfileBszTarInfo.isfilecCs
|jtkS)N)rr
)rr6r6r7rDsz
TarInfo.isdircCs
|jtkS)N)rSYMTYPE)rr6r6r7rFsz
TarInfo.issymcCs
|jtkS)N)rLNKTYPE)rr6r6r7rHsz
TarInfo.islnkcCs
|jtkS)N)rr5)rr6r6r7ischrJsz
TarInfo.ischrcCs
|jtkS)N)rr6)rr6r6r7isblkLsz
TarInfo.isblkcCs
|jtkS)N)rFIFOTYPE)rr6r6r7isfifoNszTarInfo.isfifocCs
|jdk	S)N)r)rr6r6r7issparsePszTarInfo.issparsecCs|jtttfkS)N)rr5r6r{)rr6r6r7isdevRsz
TarInfo.isdevN)rrhr)r*r'r(rrrr+r,rrrrrrrrr)r)5rqrrrs	__slots__rrrpropertyr%rrr&rr	rrrrrrrrclassmethodr1rstaticmethodrr8rr,rQrSrRrXrTrUrWrgrfrhr[rdrZrrvrrrryrzr|r}r~r6r6r6r7rssd



1*
3?
zc
@seZdZdZdZdZdZeZe	Z
dZeZ
eZdZdjddZedddefd	d
ZedkddZedlddZedmddZednddZdddddZddZddZddZdd Zdod!d"Zdpdd$d%d&Zdqdd'd(d)Z drd*d+Z!d,d-Z"dsddd/d0d1Z#d2d3Z$dtddd/d5d6Z%d7d8Z&dud9d:Z'd;d<Z(d=d>Z)d?d@Z*dvdddAdBdCZ+dDdEZ,dFdGZ-dHdIZ.dJdKZ/dLdMZ0dNdOZ1dPdQZ2dRdSZ3dTdUZ4dVdWZ5dXdYZ6dwdZd[Z7d\d]Z8dxd^d_Z9d`daZ:dbdcZ;dddeZ<dfdgZ=dhdiZ>dS)yrrFr#NryrcCsddddd}||krtd||_|||_|sj|jdkrVtjj|rVd|_d|_t||j}d	|_n@|dkrt|d
rt	|j
ttfr|j
}t|dr|j|_d|_|rtjj
|nd|_
||_|dk	r||_|dk	r||_|dk	r||_|dk	r||_|dk	r||_|	|_|
dk	r4|jtkr4|
|_ni|_|dk	rJ||_|dk	rZ||_|
|_d	|_g|_d	|_|jj|_i|_y|jd
krd|_ |j!|_ |jdkr8x|jj"|jy|jj#|}|jj$|WnTt%k
r|jj"|jPYn0t&k
r0}zt't|WYdd}~XnXqW|jdkrd|_|jr|jj(|jj)}|jj*||jt+|7_Wn&|js|jj,d|_YnXdS)Nrbzr+bwbZxb)ryarzrnz!mode must be 'r', 'a', 'w' or 'x'rrzFrrhTryrn)rrzrn)-r.rh_moder|r%exists	bltn_openrrr)rr+rLabspathrrPrdereferenceignore_zerosr4r5rrdebug
errorlevelcopybufsizermembers_loadedrrinodesfirstmemberr\rrSrrvrrr1r
r[r0r)rrrhrrPrrrr4r5rrrrZmodeserTr6r6r7rrs






$
zTarFile.__init__c

s|r|rtd|dkrfdd}xttj|dD]b}tj|}|dk	r\|j}	y||d|f|Sttfk
r|dk	r|j|	w8Yq8Xq8Wtdnd|kr|jdd	\}
}|
pd}
|pd
}|jkrtj|}ntd||||
|f|Sd|kr|jdd	\}
}|
p.d}
|p8d
}|
dkrLtdt	||
|||}y||
|f|}Wn|j
YnXd|_|S|dkrj|||f|StddS)Nznothing to openryr:*csj|dkS)Ntaropen)	OPEN_METH)r)r0r6r7not_compressedsz$TarFile.open.<locals>.not_compressed)keyz%file could not be opened successfully:r#rzunknown compression type %r|rzzmode must be 'r' or 'w'Frrnzundiscernible mode)ryr)ryrz)rrzrn)
r.sortedrrlrrrrr2rrrr)
r0rrhrr_kwargsrrfuncZ	saved_posrgstreamrr6)r0r7rsP%







zTarFile.opencKs |dkrtd||||f|S)Nryrrzrnz!mode must be 'r', 'a', 'w' or 'x')ryrrzrn)r.)r0rrhrrr6r6r7r<szTarFile.taropenrcKs|d
krtdyddl}|jWn ttfk
rBtdYnXy|j||d||}Wn.tk
r|dk	r|dkrtdYnXy|j|||f|}WnBtk
r|j	|dkrtdYn|j	YnXd	|_
|S)Nryrzrnzmode must be 'r', 'w' or 'x'rzgzip module is not availablerbznot a gzip fileF)ryrzrn)r.gzipZGzipFilerAttributeErrorrrrrrr)r0rrhr
compresslevelrrrr6r6r7gzopenDs2
zTarFile.gzopencKs|d
krtdyddl}Wntk
r8tdYnX|j|pD|||d}y|j|||f|}WnFttfk
r|j|dkrt	dYn|jYnXd	|_
|S)Nryrzrnzmode must be 'r', 'w' or 'x'rzbz2 module is not available)rznot a bzip2 fileF)ryrzrn)r.rrrZBZ2FilerrEOFErrorrrr)r0rrhrrrrrr6r6r7bz2openfs(zTarFile.bz2opencKs|d
krtdyddl}Wntk
r8tdYnX|j|pD|||d}y|j|||f|}WnH|jtfk
r|j|dkrt	dYn|jYnXd	|_
|S)Nryrzrnzmode must be 'r', 'w' or 'x'rzlzma module is not available)presetznot an lzma fileF)ryrzrn)r.rrrZLZMAFilerrrrrr)r0rrhrrrrrr6r6r7xzopens&zTarFile.xzopenrrrr)rrrrc
Cs|jr
dSd|_z`|jdkrn|jjttd|jtd7_t|jt\}}|dkrn|jjtt|Wd|j	s|jj
XdS)NTrrzrnr$r)rrzrn)rrhrr[r1rrrY
RECORDSIZErr)rr`rar6r6r7rs
z
TarFile.closecCs"|j|}|dkrtd||S)Nzfilename %r not found)
_getmemberKeyError)rrrr6r6r7	getmembers
zTarFile.getmembercCs|j|js|j|jS)N)_checkr_loadr)rr6r6r7
getmembersszTarFile.getmemberscCsdd|jDS)NcSsg|]
}|jqSr6)r)rmrr6r6r7rosz$TarFile.getnames.<locals>.<listcomp>)r)rr6r6r7getnamesszTarFile.getnamescCsp|jd|dk	r|j}|dkr$|}tjj|\}}|jtjd}|jd}|j}||_	|dkrt
tdr|jrtj|}qtj
|}ntj|j}d}|j}t
j|r|j|jf}	|jr|jdkr|	|jkr||j|	krt}
|j|	}nt}
|	drx||j|	<nht
j|r"t}
nVt
j|r4t}
nDt
j|rPt}
tj|}n(t
j|rbt }
nt
j!|rtt"}
ndS||_||_#|j$|_%|j&|_'|
tkr|j(|_)nd|_)|j*|_+|
|_,||_-t.ryt.j/|j%d|_0Wnt1k
rYnXt2r*yt2j3|j'd|_4Wnt1k
r(YnX|
t t"fkrlt
tdrlt
tdrltj5|j6|_7tj8|j6|_9|S)	Nawxrlstatrr#rmajorminor):rrr|r%
splitdriverrrrrrrrrffstatfilenost_modeS_ISREGst_inost_devst_nlinkrrxrS_ISDIRr
S_ISFIFOr{S_ISLNKrwreadlinkS_ISCHRr5S_ISBLKr6rhst_uidr)st_gidr*st_sizer'st_mtimer(rrpwdgetpwuidr+rgrpZgetgrgidr,rst_rdevrrr)rrarcnamerZdrvrZstatresrZstmdinoderr6r6r7
gettarinfos~	




zTarFile.gettarinfoT)rcCs0|j|dkr|}x|D]
}|r|jdkr:tdnttj|jtd|jpX|j|jpb|jf|j	sz|j
rtdd|j|jfntd|j
|jdkrtdntdtj|jddt|j|jrd	nd
|r"|jr
td|j|jr"td|jtqWdS)
Nz
??????????z%s/%sz%10sz%d,%dz%10dz????-??-?? ??:??:??z%d-%02d-%02d %02d:%02d:%02drrrz-> zlink to )rrhrprfrgr+r)r,r*ryrzrrr'r(rZ	localtimerrrrrro)rverboserrr6r6r7rj>s2





zTarFile.list)filterc	
Csv|jd|dkr|}|dk	rPddl}|jdtd||rP|jdd|dS|jdk	rtjj||jkr|jdd|dS|jd||j	||}|dkr|jdd|dS|dk	r||}|dkr|jdd|dS|j
rt|d	}|j||WdQRXnd|j
rh|j||rrxHtj|D].}|jtjj||tjj|||||d
q4Wn
|j|dS)Nrrzuse the filter argument insteadr$ztarfile: Excluded %rztarfile: Skipped %rr#ztarfile: Unsupported type %rr)r)rrcrdre_dbgrr|r%rrrraddfilerlistdiraddr)	rrr	recursiveZexcluderrcrfr6r6r7rdsB



zTarFile.addcCs|jdtj|}|j|j|j|j}|jj||jt	|7_|j
}|dk	rt||j|j|dt
|jt\}}|dkr|jjtt||d7}|j|t7_|jj|dS)Nr)r_rr#)rr
rrPr4r5rr[rr0rrXr'rYrr1rr)rrrrTr_r`rar6r6r7rs

zTarFile.addfilec"CsH|dkr|j}|dkrtjjd}|dkrytt}Wntk
rNYnBXddl}|jddd}||j	|WdQRX|jdddd}|ryt
|}Wn&tk
rtd|d	dYnX||_|St
rtjdttStSt|trtd|St|r|Syt
|Stk
rBtd|d	dYnXdS)NZ PYTHON_TARFILE_EXTRACTION_FILTERr#)Z
interpolationZcomment_prefixesrr)Zfallbackzfilter z
 not foundz4The default behavior of tarfile extraction has been z$changed to disallow common exploits z(including CVE-2007-4559). z1By default, absolute/parent paths are disallowed z and some mode bits are cleared. z/See https://access.redhat.com/articles/7004769 zfor more details.z#String names are not supported for z2TarFile.extraction_filter. Use a function such as ztarfile.data_filter directly.)rzXThe default behavior of tarfile extraction has been changed to disallow common exploits zsThe default behavior of tarfile extraction has been changed to disallow common exploits (including CVE-2007-4559). zThe default behavior of tarfile extraction has been changed to disallow common exploits (including CVE-2007-4559). By default, absolute/parent paths are disallowed zThe default behavior of tarfile extraction has been changed to disallow common exploits (including CVE-2007-4559). By default, absolute/parent paths are disallowed and some mode bits are cleared. zThe default behavior of tarfile extraction has been changed to disallow common exploits (including CVE-2007-4559). By default, absolute/parent paths are disallowed and some mode bits are cleared. See https://access.redhat.com/articles/7004769 aThe default behavior of tarfile extraction has been changed to disallow common exploits (including CVE-2007-4559). By default, absolute/parent paths are disallowed and some mode bits are cleared. See https://access.redhat.com/articles/7004769 for more details.zUString names are not supported for TarFile.extraction_filter. Use a function such as zrString names are not supported for TarFile.extraction_filter. Use a function such as tarfile.data_filter directly.)extraction_filterr|environr4r_CONFIG_FILENAMEFileNotFoundErrorconfigparserZConfigParserZ	read_file_NAMED_FILTERSrr._RH_SAFER_DEFAULTrcrdRuntimeWarningrrr)r+	TypeErrorcallable)rrrfilerZconfr6r6r7_get_filter_functionsR


zTarFile._get_filter_function.)
numeric_ownerrc"Csg}|j|}|dkr|}xT|D]L}|j|||\}}	|dkr@q |jrR|j|	|j|||j||dq W|jddddx$|D]}	yy||	|}Wn4tk
r}
z|j|	t|
wWYdd}
~
XnX|dkr|j|	dwt	j
j||j}yt	j
|}Wn$tk
r.|j|dwYnXtj|jsL|j|dw|j|||d	|j|||j||Wqtk
r}
z|j|
WYdd}
~
XqXqWdS)
N)	set_attrsrfilter_functioncSs|jS)N)r)rr6r6r7<lambda>	sz$TarFile.extractall.<locals>.<lambda>T)rreversezexcluded by filterZmissingznot a directory)r)r_get_extract_tarinforr_extract_onesort_FILTER_ERRORS_log_no_directory_fixupreprr|r%rrrrrfrrchownutimechmodr
_handle_nonfatal_error)rr%rrrZdirectoriesrrr
unfilteredexcdirpathrrr6r6r7
extractallsP


zTarFile.extractallcCs|jdd|j|fdS)Nr$z(tarfile: Not fixing up directory %r (%s))rr)rrreasonr6r6r7r4	szTarFile._log_no_directory_fixuprc	Cs8|j|}|j|||\}}|dk	r4|j||||dS)N)rrr)	rrr%rrrrrrr6r6r7extract8	s

zTarFile.extractcCst|tr|j|}n|}d}y|||}WnZttfk
r\}z|j|WYdd}~Xn,tk
r}z|j|WYdd}~XnX|dkr|jdd|j	dS|j
rtj|}tj
j||j|_||fS)Nr$ztarfile: Excluded %r)NN)r)r+rrr_handle_fatal_errorr
rrrrr
r|r%rrr)rrrr%rfilteredrr6r6r7rL	s"

zTarFile._get_extract_tarinfocCs|jdy&|j|tjj||j||||dWnVtk
r\}z|j|WYdd}~Xn,tk
r}z|j	|WYdd}~XnXdS)Nry)rrrextraction_root)
r_extract_memberr|r%rrrrr
r)rrr%rrrrr6r6r7rj	s
zTarFile._extract_onecCs"|jdkrn|jdd|dS)Nr#ztarfile: %s)rr)rrr6r6r7r~	s
zTarFile._handle_nonfatal_errorcCsn|jdkrn\t|trP|jdkr6|jdd|jqj|jdd|j|jfn|jddt|j|fdS)Nrr#ztarfile: %sztarfile: %s %rztarfile: %s %s)rr)rfilenamerstrerrorrrq)rrr6r6r7r	s


zTarFile._handle_fatal_errorcCs|jdt|tr |j|}n|}|js6|jtkrB|j||S|jsR|j	rzt|j
trhtdq~|j
|j|SndSdS)Nryz'cannot extract (sym)link as file object)rr)r+rrrrY
fileobjectrrrrr	extractfile_find_link_target)rrrr6r6r7r	s


zTarFile.extractfile)rrcCs\|jd}|jdtj}tjj|}|r@tjj|r@tj||jsP|j	rj|j
dd|j|jfn|j
d|j|j
r|j||n|jr|j||n~|jr|j||nh|js|jr|j||nJ|js|j	r|j||||dn&|jtkr|j||n|j|||rX|j||||j	sX|j|||j||dS)Nrr#z%s -> %s)rr)rJrr|rr%rrmakedirsrrrrrrmakefilermakedirr|makefiforyrzmakedevmakelink_with_filterrrYmakeunknownrrr)rr
targetpathrrrrZ	upperdirsr6r6r7r	s:



zTarFile._extract_membercCs@y&|jdkrtj|ntj|dWntk
r:YnXdS)Ni)rhr|mkdirFileExistsError)rrrr6r6r7r	s
zTarFile.makedircCs|j}|j|j|j}t|df}|jdk	rrx,|jD]"\}}|j|t|||t|q6W|j|j|j	nt|||jt|WdQRXdS)Nr)
rrrrrrrXrr'truncate)rrrsourcer_targetrr'r6r6r7r	s


zTarFile.makefilecCs"|j|||jdd|jdS)Nr#z9tarfile: Unknown file type %r, extracted as regular file.)rrr)rrrr6r6r7r
szTarFile.makeunknowncCs"ttdrtj|ntddS)Nmkfifozfifo not supported by system)rr|r
r
)rrrr6r6r7r
s
zTarFile.makefifocCsnttdsttdr td|j}|dkr2d}|jrF|tjO}n
|tjO}tj||tj	|j
|jdS)Nmknodrz'special devices not supported by systemi)rr|r
rhrzrfS_IFBLKS_IFCHRrrrr)rrrrhr6r6r7r
s
zTarFile.makedevcCs|j||ddS)N)r)rrrr6r6r7makelink(
szTarFile.makelinkc	$Cs&d}yT|jr6tjj|r$tj|tj|j|dStjj|jrVtj	|j|dSWnt
k
rpd}YnXy|j|}Wn$tk
r|rt
dnYnX|dkr|}nR|dkrt
dy|||}Wn2tk
r}zt||j|WYdd}~XnX|dk	r"|j||||ddS)NFTz%unable to resolve link inside archivez6makelink_with_filter: if filter_function is not None, z%extraction_root must also not be None)rrz[makelink_with_filter: if filter_function is not None, extraction_root must also not be None)rr|r%lexistsunlinksymlinkrrrlinksymlink_exceptionrrr
rrrr)	rrrrrZkeyerror_to_extracterrorrrcauser6r6r7r+
sB	

 
zTarFile.makelink_with_filtercCsttdrtjdkr|j}|j}|sytrB|jrBtj|jd}Wntk
rXYnXyt	rv|j
rvt	j|j
d}Wntk
rYnX|dkrd}|dkrd}y4|jrttdrtj
|||ntj|||Wntk
rtdYnXdS)	Ngeteuidrr$r#lchownzcould not change ownerr9r9)rr|rr*r)rr,Zgetgrnamrrr+getpwnamrrrrr
)rrrrgur6r6r7r]
s0

z
TarFile.chowncCsL|jdkrdSttdrHytj||jWntk
rFtdYnXdS)Nrzcould not change mode)rhrr|rrr
)rrrr6r6r7r~
s

z
TarFile.chmodcCsV|j}|dkrdSttds dSytj|||fWntk
rPtdYnXdS)Nrz"could not change modification time)r(rr|rrr
)rrrr(r6r6r7r
s
z
TarFile.utimecCs|jd|jdk	r$|j}d|_|S|j|jjkrZ|jj|jd|jjdsZtdd}xby|jj	|}WnHt
k
r}z2|jr|jdd|j|f|jt
7_wbWYdd}~Xntk
r,}zN|jr|jdd|j|f|jt
7_wbn|jdkrtt|WYdd}~Xntk
rT|jdkrPtdYnjtk
r}z|jdkr~tt|WYdd}~Xn0tk
r}ztt|WYdd}~XnXPqbW|dk	r|jj|nd|_|S)	NZrar#zunexpected end of datar$z0x%X: %srz
empty fileT)rrrrrrrZrrrSrvrrrrHr+rtrurwrrr)rmrrr6r6r7r\
sL


zTarFile.nextc	Cs|j}d}|dk	rHy|j|}Wntk
r:d}YnX|d|}|rXtjj|}xLt|D]@}|r||j|jkrbd}qb|rtjj|j}n|j}||krb|SqbW|rt|dS)NFT)	rindexr.r|r%rreversedrr)	rrr	normalizerZskippingrrmember_namer6r6r7r
s,
zTarFile._getmembercCs"x|j}|dkrPqWd|_dS)NT)r\r)rrr6r6r7r
s
z
TarFile._loadcCs:|jrtd|jj|dk	r6|j|kr6td|jdS)Nz%s is closedzbad operation for mode %r)rrrrqrh)rrhr6r6r7r
szTarFile._checkcCs`|jr.djtdtjj|j|jf}d}n
|j}|}|j||dd}|dkr\t	d||S)NrT)rr zlinkname %r not found)
rrrr|r%rrrrr)rrrlimitrr6r6r7rs zTarFile._find_link_targetccs|jr|jEdHdSd}|jdk	r:|j}|d7}|VxN|t|jkrV|j|}n"|jst|j}|sxd|_dSndS|d7}|Vq<WdS)Nrr#T)rrrr\r0)rrrr6r6r7__iter__s&
zTarFile.__iter__cCs||jkrt|tjddS)N)r)rrormstderr)rlevelmsgr6r6r7r:s
zTarFile._dbgcCs|j|S)N)r)rr6r6r7	__enter__@szTarFile.__enter__cCs,|dkr|jn|js"|jjd|_dS)NT)rrrr)rrr	tracebackr6r6r7__exit__Ds


zTarFile.__exit__)
NryNNNNNNrNNNN)ryN)ryNr)ryNr)ryNN)NNN)T)NTN)N)rN)rT)N)TF)NF)N)?rqrrrsrrrrrrPrr4r5rrrrrrrrrrrrrrrrrrrrjrrrrrrrrrrrrrrrrrrrrrrr\rrrrr#rr'r)r6r6r6r7rVs
lZ!

d&=
5D
62!6
(

	cCs.yt|}|jdStk
r(dSXdS)NTF)rrr)rrr6r6r7rRscCsddl}d}|j|d}|jdddddd	|jd
dtdd
|j}|jddddd|jdddd5dd|jdddd6dd|jdddd d|j}|jr|jr|jd!d"|j	r*|j	}t
|rt|d# }|jt
|jtjd$WdQRX|jr&t
d%j|n|jd!d&j|n|jr|j}t
|rjtj|d'}|j|jd(WdQRXn|jd!d&j|n|jrPt|jd!kr|jd}tj}n,t|jd)kr|j\}}n|jd!|jt
|r<tj|d'}|j||jd*WdQRX|jrN|d+kr&d,j|}	nd-j||}	t
|	n|jd!d&j|n|jr|jjd}
tjj|
\}}d.d.d/d/d0d0d0d0d1}
||
krd2|
|nd3}|j}tj|
| }x|D]}|j|qWWdQRX|jrt
d4j|
n|jd!|jdS)7Nrz3A simple command line interface for tarfile module.)descriptionz-vz	--verbose
store_trueFzVerbose output)actiondefaulthelpz--filterz<filtername>zFilter for extraction)metavarchoicesr.z-lz--list	<tarfile>zShow listing of a tarfile)r/r.z-ez	--extract+<output_dir>zExtract tarfile into target dir)nargsr/r.z-cz--create<name><file>zCreate tarfile from sourcesz-tz--testzTest if a tarfile is validr#z&--filter is only valid for extraction
ry)rz{!r} is a tar archive.z{!r} is not a tar archive.
zr:*)rr$)r%rrz{!r} file is extracted.z+{!r} file is extracted into {!r} directory.rrr)z.gzz.tgzz.xzz.txzz.bz2z.tbzz.tbz2z.tb2zw:rzz{!r} file created.)r1r3)r5r6)argparseArgumentParseradd_argumentrZadd_mutually_exclusive_group
parse_argsrrexitZtestrrrrormr$rrPrjrr0r|curdirZformat_helprZcreatepopr%splitextr)r7r*parserrbargsr\rZtfr<r&Ztar_namerlZextZcompressionsZtar_modeZ	tar_files	file_namer6r6r7main`s










rB__main__)r%r&r'r(r)r*r+r,)T)sversion
__author__Z__date__Z	__cvsid____credits__builtinsrrrmr|rrWrfrrSr
rercrrrrNotImplementedErrorrr	NameError__all__rrr1rrrrrrr3rrGrxrwr5r6r
r{ZCONTTYPEr!r rHr-r/rVr
rrrrYrurKrrrer*rFrsrrgetfilesystemencodingr8r=rKrQrUrXrgrp	Exceptionrr
rrr	rrtrurvrHrwrxrobjectrrBufferedReaderrrrrrrrrrrrrrrr	compiler`rrrrBrqr6r6r6r7<module> s$



wh



D
hb