MINI MINI MANI MO

Path : /usr/lib64/python3.6/__pycache__/
File Upload :
Current File : //usr/lib64/python3.6/__pycache__/tarfile.cpython-36.opt-2.pyc

3


 \ l'@svdZdZdZdZdZddlmZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZyddlZWnek
rdZYnXyddlZWnek
rdZYnXeefZyeef7ZWnek
rYnXdd	d
ddd
dddddddddgZdZdZedZdZdZdZdZ dZ!dZ"dZ#dZ$d Z%d!Z&d"Z'd#Z(d$Z)d%Z*d&Z+d'Z,d(Z-d)Z.d*Z/d+Z0dZ1d,Z2d-Z3e2Z4e"e#e$e%e(e)e*e&e'e+e,e-fZ5e"e#e*e-fZ6e+e,e-fZ7djZ8d.d/d4d5hZ9e:e:e:e;e;e;d6Z<e	j=d7krd8Z>nej?Z>d9d:Z@d;d<ZAd=d>ZBd?e4fd@dAZCdBdCZDdedfdDdEZEdFdGZFdHdIZGGdJddeHZIGdKddeIZJGdLddeIZKGdMd
d
eIZLGdNddeIZMGdOddeIZNGdPdQdQeNZOGdRdSdSeNZPGdTdUdUeNZQGdVdWdWeNZRGdXdYdYeNZSGdZd[d[ZTGd\d]d]ZUGd^d_d_eVZWGd`dadaeVZXGdbdcdce
jYZZGddd	d	eVZ[GdeddeVZ\dfd
Z]e\jZdgdhZ^e_dikrre^dS)kz0.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_FORMATrisustar  sustar00d01234567LKSxgXpathlinkpathsizemtimeuidgidunamegname)ZatimeZctimer(r)r*r'ntzutf-8cCs(|j||}|d||t|tS)N)encodelenNUL)slengthencodingerrorsr5/usr/lib64/python3.6/tarfile.pystnsr7cCs*|jd}|dkr|d|}|j||S)Nrr#)finddecode)r1r3r4pr5r5r6ntss
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>)ranger/r<intstrip
ValueErrorInvalidHeaderError)r1nir5r5r6ntis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*orAr@r=r>zoverflow in number field)rEbytesr0r	bytearrayrDinsertrG)rIdigitsformatr1rJr5r5r6itns 2
rQcCs0dttjd|}dttjd|}||fS)Nr@Z
148B8x356BZ
148b8x356b)sumstructZunpack_from)bufZunsigned_chksumZ
signed_chksumr5r5r6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@)shutilcopyfileobjdivmodrDreadr/write)	srcdstr2	exceptionbufsizeblocks	remainderbrTr5r5r6rXs$


rXcCs ddl}|jdtdtj|S)Nrz$deprecated in favor of stat.filemoder$)warningswarnDeprecationWarningstatfilemode)modercr5r5r6rgsrgcCs8ttjdd}|dk	r(|j|dj|}t|dddS)Nr3backslashreplace )end)getattrsysstdoutr.r:print)r1r3r5r5r6_safe_printsrpc@seZdZdS)rN)__name__
__module____qualname__r5r5r5r6rsc@seZdZdS)r
N)rqrrrsr5r5r5r6r
sc@seZdZdS)rN)rqrrrsr5r5r5r6rsc@seZdZdS)rN)rqrrrsr5r5r5r6rsc@seZdZdS)r	N)rqrrrsr5r5r5r6r	sc@seZdZdS)rN)rqrrrsr5r5r5r6r"sc@seZdZdS)EmptyHeaderErrorN)rqrrrsr5r5r5r6rt%srtc@seZdZdS)TruncatedHeaderErrorN)rqrrrsr5r5r5r6ru(sruc@seZdZdS)EOFHeaderErrorN)rqrrrsr5r5r5r6rv+srvc@seZdZdS)rHN)rqrrrsr5r5r5r6rH.srHc@seZdZdS)SubsequentHeaderErrorN)rqrrrsr5r5r5r6rw1srwc@s,eZdZddZddZddZddZd	S)

_LowLevelFilecCsFtjtjtjBtjBd|}ttdr2|tjO}tj||d|_dS)N)rwO_BINARYi)	osO_RDONLYO_WRONLYO_CREATO_TRUNChasattrr{rfd)selfnamerhr5r5r6__init__>s

z_LowLevelFile.__init__cCstj|jdS)N)r|closer)rr5r5r6rGsz_LowLevelFile.closecCstj|j|S)N)r|rZr)rr'r5r5r6rZJsz_LowLevelFile.readcCstj|j|dS)N)r|r[r)rr1r5r5r6r[Msz_LowLevelFile.writeN)rqrrrsrrrZr[r5r5r5r6rx8s	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_rrrr5r5r6r[sl












z_Stream.__init__cCst|dr|jr|jdS)Nr)rrr)rr5r5r6__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_LEVELrrSpackrEtime_Stream__writerendswithr.r0)rZ	timestampr5r5r6rsz_Stream._init_write_gzcCsR|jdkr|jj||j|_|jt|7_|jdkrD|jj|}|j|dS)Nrr)	rrrrrr/rcompressr)rr1r5r5r6r[s

z
_Stream.writecCsR|j|7_x>t|j|jkrL|jj|jd|j|j|jd|_qWdS)N)rTr/r_rr[)rr1r5r5r6Z__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)rr5r5r6rs
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 methodr@r?rV)rZ
decompressobjrrr
_Stream__readrrordrZr0)rflagZxlenr1r5r5r6rs.
 


z_Stream._init_read_gzcCs|jS)N)r)rr5r5r6tellsz_Stream.tellrcCs\||jdkrNt||j|j\}}xt|D]}|j|jq.W|j|ntd|jS)Nrz seeking backwards is not allowed)rrYr_rDrZr	)rrr`rarJr5r5r6seeksz_Stream.seekNcCsZ|dkr:g}x |j|j}|s P|j|qWdj|}n
|j|}|jt|7_|S)Nr)_readr_appendjoinrr/)rr'trTr5r5r6rZ
s
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)rrr/rr_rZ
decompressr^rrr)rr'crrTr5r5r6rs"





z
_Stream._readcCsnt|j}|jg}x6||krH|jj|j}|s0P|j||t|7}qWdj|}||d|_|d|S)Nr)r/rTrrZr_rr)rr'rrrTr5r5r6Z__read5s



z_Stream.__read)r)N)rqrrrsrrrr[rrrrrrZrrr5r5r5r6rPsF
	

rc@s,eZdZddZddZddZddZd	S)
rcCs||_|jjt|_dS)N)rrZ	BLOCKSIZErT)rrr5r5r6rKsz_StreamProxy.__init__cCs|jj|_|jS)N)rrZrT)rr'r5r5r6rZOs
z_StreamProxy.readcCsP|jjdrdS|jdddkr8|jdddkr8d	S|jjdrHdSd
SdS)NsrrrsBZhr
s1AY&SYr]7zXZrr)rr)rT
startswith)rr5r5r6rSs$z_StreamProxy.getcomptypecCs|jjdS)N)rr)rr5r5r6r]sz_StreamProxy.closeN)rqrrrsrrZrrr5r5r5r6rFs
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	blockinfoZlastposZrealposr5r5r6rjs(

z_FileInFile.__init__cCsdS)Nr5)rr5r5r6rsz_FileInFile.flushcCsdS)NTr5)rr5r5r6readablesz_FileInFile.readablecCsdS)NFr5)rr5r5r6writablesz_FileInFile.writablecCs
|jjS)N)rseekable)rr5r5r6rsz_FileInFile.seekablecCs|jS)N)r)rr5r5r6rsz_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_ENDrG)rrwhencer5r5r6rs


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'rrrrr/rrrZrr0)	rr'rTdatastartstoprr2rbr5r5r6rZs.

z_FileInFile.readcCs&|jt|}||dt|<t|S)N)rZr/)rrbrTr5r5r6readintosz_FileInFile.readintocCs
d|_dS)NT)r)rr5r5r6rsz_FileInFile.close)N)N)rqrrrsrrrrrrrrrrZrrr5r5r5r6rds

rcseZdZfddZZS)ExFileObjectcs&t|j|j|j|j}tj|dS)N)rroffset_datar'sparsesuperr)rtarfiletarinfor)	__class__r5r6rs
zExFileObject.__init__)rqrrrsr
__classcell__r5r5)rr6rsrc@seZdZdhZdiddZddZddZeeeZddZ	ddZ
ee	e
Zd d!Zd"d#Z
eed$fd%d&Zd'd(Zd)d*Zd+d,Zed-d.Zd/d0Zed1d2Zed3d4Zed5d6Zed7d8Zed9d:Zed;d<Zd=d>Zd?d@ZdAdBZ dCdDZ!dEdFZ"dGdHZ#dIdJZ$dKdLZ%dMdNZ&dOdPZ'dQdRZ(dSdTZ)dUdVZ*dWdXZ+dYdZZ,d[d\Z-d]d^Z.d_d`Z/dadbZ0dcddZ1dedfZ2dgS)jrrrhr)r*r'r(chksumtypelinknamer+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)rrr5r5r6rs"zTarInfo.__init__cCs|jS)N)r)rr5r5r6_getpathszTarInfo._getpathcCs
||_dS)N)r)rrr5r5r6_setpathszTarInfo._setpathcCs|jS)N)r)rr5r5r6_getlinkpathszTarInfo._getlinkpathcCs
||_dS)N)r)rrr5r5r6_setlinkpathszTarInfo._setlinkpathcCsd|jj|jt|fS)Nz<%s %r at %#x>)rrqrid)rr5r5r6__repr__szTarInfo.__repr__cCsn|j|jd@|j|j|j|j|j|j|j|j	|j
|j|jd
}|dt
krj|djdrj|dd7<|S)Ni)
rrhr)r*r'r(rrrr+r,rrrr/)rrhr)r*r'r(rrrr+r,rrDIRTYPEr)rinfor5r5r6get_infos 
zTarInfo.get_infosurrogateescapecCsT|j}|tkr|j|||S|tkr4|j|||S|tkrH|j||StddS)Nzinvalid format)rr
create_ustar_headerrcreate_gnu_headerrcreate_pax_headerrG)rrPr3r4rr5r5r6tobuf&sz
TarInfo.tobufcCsnt|d<t|dj||tkr(tdt|dj||tkr^|j|d||\|d<|d<|j|t||S)Nmagicrzlinkname is too longrprefix)	POSIX_MAGICr/r.LENGTH_LINKrGLENGTH_NAME_posix_split_name_create_headerr
)rrr3r4r5r5r6r4szTarInfo.create_ustar_headercCst|d<d}t|dj||tkr<||j|dt||7}t|dj||tkrl||j|dt||7}||j|t	||S)Nrrrr)
	GNU_MAGICr/r.r_create_gnu_long_headerGNUTYPE_LONGLINKrGNUTYPE_LONGNAMErr)rrr3r4rTr5r5r6rAszTarInfo.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,rArBr)r?r*r'r(rr#rr)r+r+r)r,r,rr)r?r*r?r'rr(r)rrrr)rrcopyrrr.UnicodeEncodeErrorr/
isinstancefloatstr_create_pax_generic_headerXHDTYPErr
)
rrr3rrZhnamer2rOvalrTr5r5r6rOs4
.zTarInfo.create_pax_headercCs|j|tdS)Nzutf-8)r	XGLTYPE)clsrr5r5r6create_pax_global_headersz TarInfo.create_pax_global_headercCs|jd}xltdt|D]R}dj|d|}dj||d}t|j||tkrt|j||tkrPqWtd||fS)Nrr#zname is too long)splitrDr/rr.
LENGTH_PREFIXrrG)rrr3r4Z
componentsrJrr5r5r6rs
zTarInfo._posix_split_namecCsVt|jddd||t|jddd@d|t|jddd|t|jd	dd|t|jd
dd|t|jddd|d
|jdtt|jddd|||jdtt|jddd||t|jddd||t|jddd|t|jddd|t|jddd||g}tjdtdj|}t	|tdd}|ddt
d|d|dd}|S) Nrrrrhrir?r)r*r'rr(s        rrrr+rr,rrrrz%dsrilz%06orAieii)r7getrQrrrSrrrrUrL)rrPr3r4partsrTrr5r5r6rs&

&zTarInfo._create_headercCs.tt|t\}}|dkr*|t|t7}|S)Nr)rYr/rr0)Zpayloadr`rar5r5r6_create_payloadszTarInfo._create_payloadcCsR|j||t}i}d|d<||d<t||d<t|d<|j|t|||j|S)Nz
././@LongLinkrrr'r)r.r0r/rrr
r)r
rrr3r4rr5r5r6rs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-8rBTrs21 hdrcharset=BINARY
rrrrA =
z././@PaxHeaderrrr'rr)
itemsr.rr/rrLrrr
r)r
rrr3ZbinarykeywordvalueZrecordslrIr;rr5r5r6r	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)iIiQiYirirriii)$r/rtrrucountr0rvrKrUrHr<rrhr)r*r'r(rrrr+r,rrAREGTYPErrGNUTYPE_SPARSErDrGrboolrisdirrstrip	GNU_TYPES)r
rTr3r4robjrrstructsrJrnumbytes
isextendedorigsizer5r5r6frombufsZ
zTarInfo.frombufcCs8|jjt}|j||j|j}|jjt|_|j|S)N)	rrZrr/r3r4rr_proc_member)r
rrTr*r5r5r6fromtarfile?szTarInfo.fromtarfilecCsT|jttfkr|j|S|jtkr,|j|S|jtttfkrF|j	|S|j
|SdS)N)rrr
_proc_gnulongr%_proc_sparser
rSOLARIS_XHDTYPE	_proc_pax
_proc_builtin)rrr5r5r6r0Ts



zTarInfo._proc_membercCsR|jj|_|j}|js$|jtkr4||j|j7}||_|j	|j
|j|j|S)N)
rrrisregrSUPPORTED_TYPES_blockr'r_apply_pax_inforr3r4)rrrr5r5r6r6as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)rrZr9r'r1rrwrrrr<r3r4rrr)rrrTnextr5r5r6r2rs

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)Nrrr"i)rrrZrrDrKrGrr&rrrr9r'r)
rrr+r-r.rTrrJrr,r5r5r6r3s(zTarInfo._proc_sparsecCs |jj|j|j}|jtkr&|j}n
|jj}tj	d|}|dk	rX|j
djd|d<|jd}|dkrr|j
}nd}tjd}d}x|j||}|sP|j\}	}
t|	}	||jdd|jd|	d}|j|
dd|j}
|
tkr|j|||j
|j}n|j|dd|j}|||
<||	7}qWy|j|}Wntk
rTtd	YnXd
|krn|j||nHd|kr|j|||n.|jdd
kr|jddkr|j||||jttfkr|j||j
|j|j |_ d|kr|j!}
|j"s|jt#kr|
|j|j7}
|
|_ |S)Ns\d+ hdrcharset=([^\n]+)\nr#zutf-8
hdrcharsetZBINARYs(\d+) ([^=]+)=rr$z missing or bad subsequent headerzGNU.sparse.mapzGNU.sparse.sizezGNU.sparse.major1zGNU.sparse.minorrCr')$rrZr9r'rrrrresearchgroupr:rr3compilematchgroupsrErkr_decode_pax_fieldr4PAX_NAME_FIELDSr1rrw_proc_gnusparse_01_proc_gnusparse_00_proc_gnusparse_10r
r4r:rrr7r8)rrrTrrCr=r3Zregexrr2rrr;rr5r5r6r5s`



$	





 
zTarInfo._proc_paxcCspg}x(tjd|D]}|jt|jdqWg}x(tjd|D]}|jt|jdq@Wtt|||_dS)Ns\d+ GNU.sparse.offset=(\d+)\nr#s\d+ GNU.sparse.numbytes=(\d+)\n)r?finditerrrErAlistzipr)rr;rrTZoffsetsrCr,r5r5r6rH
szTarInfo._proc_gnusparse_00cCs@dd|djdD}tt|ddd|ddd|_dS)NcSsg|]}t|qSr5)rE).0xr5r5r6
<listcomp>sz.TarInfo._proc_gnusparse_01.<locals>.<listcomp>zGNU.sparse.map,r$r#)rrKrLr)rr;rrr5r5r6rGszTarInfo._proc_gnusparse_01cCsd}g}|jjt}|jdd\}}t|}xJt||dkrvd|krV||jjt7}|jdd\}}|jt|q.W|jj|_t	t
|ddd|ddd|_dS)Nrr#r$)rrZrrrEr/rrrrKrLr)rr;rrZfieldsrrTZnumberr5r5r6rIs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)	rsetattrrE
PAX_FIELDSPAX_NUMBER_FIELDSrGr(rr)rrr3r4rrr5r5r6r:+s"

zTarInfo._apply_pax_infocCs.y|j|dStk
r(|j||SXdS)NrB)r:UnicodeDecodeError)rrr3Zfallback_encodingZfallback_errorsr5r5r6rEBszTarInfo._decode_pax_fieldcCs"t|t\}}|r|d7}|tS)Nr#)rYr)rr#r`rar5r5r6r9JszTarInfo._blockcCs
|jtkS)N)r
REGULAR_TYPES)rr5r5r6r7Ssz
TarInfo.isregcCs|jS)N)r7)rr5r5r6isfileUszTarInfo.isfilecCs
|jtkS)N)rr)rr5r5r6r'Wsz
TarInfo.isdircCs
|jtkS)N)rSYMTYPE)rr5r5r6issymYsz
TarInfo.issymcCs
|jtkS)N)rLNKTYPE)rr5r5r6islnk[sz
TarInfo.islnkcCs
|jtkS)N)rCHRTYPE)rr5r5r6ischr]sz
TarInfo.ischrcCs
|jtkS)N)rBLKTYPE)rr5r5r6isblk_sz
TarInfo.isblkcCs
|jtkS)N)rFIFOTYPE)rr5r5r6isfifoaszTarInfo.isfifocCs
|jdk	S)N)r)rr5r5r6issparsecszTarInfo.issparsecCs|jtttfkS)N)rr[r]r_)rr5r5r6isdevesz
TarInfo.isdevN)rrhr)r*r'r(rrrr+r,rrrrrrrrr)r)3rqrrrs	__slots__rrrpropertyr%rrr&rrrrrrrrclassmethodrrstaticmethodrrrr	r/r1r0r6r2r3r5rHrGrIr:rEr9r7rVr'rXrZr\r^r`rarbr5r5r5r6rs^



1
3?
f	c
@seZdZdZdZdZdZeZe	Z
dZeZ
eZd[ddZedddefd	d
Zed\ddZed]ddZed^ddZed_ddZdddddZddZddZddZdd Zd`d!d"Zdadd$d%d&Zdbdd'd(d)Zdcd*d+Z dddd-d.d/Z!dedd-d1d2Z"d3d4Z#dfd5d6Z$d7d8Z%d9d:Z&d;d<Z'd=d>Z(d?d@Z)dAdBZ*dCdDZ+dEdFZ,dGdHZ-dIdJZ.dgdKdLZ/dMdNZ0dhdOdPZ1dQdRZ2dSdTZ3dUdVZ4dWdXZ5dYdZZ6dS)irrFr#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'rirzFrrhTryrN)rirzrN)-rGrh_moder|r%exists	bltn_openrrrrrrLabspathrrPrdereferenceignore_zerosr3r4rrdebug
errorlevelcopybufsizermembers_loadedrrinodesfirstmemberr;rr1rrvrrrrr[r/r)rrrhrrPrrnror3r4rrprqrrZmodeserTr5r5r6rs






$
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)r
r5r6not_compressedsz$TarFile.open.<locals>.not_compressed)keyz%file could not be opened successfully:r#rzunknown compression type %r|rzzmode must be 'r' or 'w'FrirNzundiscernible mode)ryrx)ryrz)rirzrN)
rGsortedrzrlrrrrrrrrry)
r
rrhrr_kwargsr{rfuncZ	saved_posrgstreamrr5)r
r6rsP%







zTarFile.opencKs |dkrtd||||f|S)NryrirzrNz!mode must be 'r', 'a', 'w' or 'x')ryrirzrN)rG)r
rrhrrr5r5r6ryMszTarFile.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)rGgzipZGzipFilerAttributeErrorrrrryrr)r
rrhr
compresslevelrrrr5r5r6gzopenUs2
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)rGrrrZBZ2FileryrEOFErrorrrr)r
rrhrrrrrr5r5r6bz2openws(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)rGrrrZLZMAFileryrrrrr)r
rrhrrrrrr5r5r6xzopens&zTarFile.xzopenryrrr)rrrrc
Cs|jr
dSd|_z`|jdkrn|jjttd|jtd7_t|jt\}}|dkrn|jjtt|Wd|j	s|jj
XdS)NTrirzrNr$r)rirzrN)rrhrr[r0rrrY
RECORDSIZErr)rr`rar5r5r6rs
z
TarFile.closecCs"|j|}|dkrtd||S)Nzfilename %r not found)
_getmemberKeyError)rrrr5r5r6	getmembers
zTarFile.getmembercCs|j|js|j|jS)N)_checkrt_loadrs)rr5r5r6
getmembersszTarFile.getmemberscCsdd|jDS)NcSsg|]
}|jqSr5)r)rMrr5r5r6rOsz$TarFile.getnames.<locals>.<listcomp>)r)rr5r5r6getnamesszTarFile.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%
splitdriverseplstriprrrrnrrffstatfilenost_modeS_ISREGst_inost_devst_nlinkrurYrS_ISDIRrS_ISFIFOr_S_ISLNKrWreadlinkS_ISCHRr[S_ISBLKr]rhst_uidr)st_gidr*st_sizer'st_mtimer(rrpwdgetpwuidr+rgrpZgetgrgidr,rst_rdevrrr)rrarcnamerZdrvrZstatresrZstmdinoderr5r5r6
gettarinfos~	




zTarFile.gettarinfoT)rscCs|j|dkr|}x|D]}|rttj|jtd|jp@|j|jpJ|jf|j	sb|j
r|tdd|j|jfntd|j
tdtj|jddt|j|jrdnd|r|jrtd	|j|jrtd
|jtqWdS)Nz%s/%sz%10sz%d,%dz%10dz%d-%02d-%02d %02d:%02d:%02drrrz-> zlink to )rrprfrgrhr+r)r,r*r\r^rrr'rZ	localtimer(rr'rXrrZro)rverbosersrr5r5r6rKOs*
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 %rrg)r)rrcrdre_dbgrr|r%rmrr7rladdfiler'listdiraddr)	rrr	recursiveZexcluderrcrfr5r5r6rosB



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#)rrrrPr3r4rr[rr/rrrXr'rYrr0rsr)rrrrTr_r`rar5r5r6rs

zTarFile.addfile.)
numeric_ownercCsg}|dkr|}xF|D]>}|jr<|j|tj|}d|_|j|||j|dqW|jddd|jx|D]}tjj	||j
}y,|j|||d|j|||j
||Wqvtk
r}z$|jdkrւn|jdd|WYdd}~XqvXqvWdS)	Ni)	set_attrsrcSs|jS)N)r)rir5r5r6<lambda>sz$TarFile.extractall.<locals>.<lambda>)r|)rr#ztarfile: %s)r'rrrhextractsortreverser|r%rrchownutimechmodr
rqr)rr%rsrZdirectoriesrdirpathrwr5r5r6
extractalls,




zTarFile.extractallrcCs|jdt|tr |j|}n|}|jr>tjj||j|_	y"|j
|tjj||j||dWntk
r}zJ|j
dkrn6|jdkr|jdd|jn|jdd|j|jfWYdd}~XnBtk
r}z$|j
dkrn|jdd|WYdd}~XnXdS)Nry)rrrr#ztarfile: %sztarfile: %s %r)rrrrrZr|r%rrr_extract_memberrrrqfilenamerstrerrorr
)rmemberr%rrrrwr5r5r6rs(	



(
zTarFile.extractcCs|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)rrrrr7rr8
fileobjectrZrXrrr	extractfile_find_link_target)rrrr5r5r6rs


zTarFile.extractfilecCsV|jd}|jdtj}tjj|}|r@tjj|r@tj||jsP|j	rj|j
dd|j|jfn|j
d|j|j
r|j||n|jr|j||nx|jr|j||nb|js|jr|j||nD|js|j	r|j||n&|jtkr|j||n|j|||rR|j||||j	sR|j|||j||dS)Nrr#z%s -> %s)r(rr|rr%dirnamerkmakedirsrZrXrrrr7makefiler'makedirr`makefifor\r^makedevmakelinkrr8makeunknownrrr)rr
targetpathrrZ	upperdirsr5r5r6r2s4


zTarFile._extract_membercCs*ytj|dWntk
r$YnXdS)Ni)r|mkdirFileExistsError)rrrr5r5r6rcszTarFile.makedircCs|j}|j|j|j}t|df}|jdk	rrx,|jD]"\}}|j|t|||t|q6W|j|j|j	nt|||jt|WdQRXdS)Nrh)
rrrrrrlrrXrr'truncate)rrrsourcer_targetrr'r5r5r6rms


zTarFile.makefilecCs"|j|||jdd|jdS)Nr#z9tarfile: Unknown file type %r, extracted as regular file.)rrr)rrrr5r5r6r}szTarFile.makeunknowncCs"ttdrtj|ntddS)Nmkfifozfifo not supported by system)rr|rr
)rrrr5r5r6rs
zTarFile.makefifocCsbttdsttdr td|j}|jr:|tjO}n
|tjO}tj||tj	|j
|jdS)Nmknodrz'special devices not supported by system)rr|r
rhr^rfS_IFBLKS_IFCHRrrrr)rrrrhr5r5r6rs
zTarFile.makedevcCsyL|jrtj|j|n0tjj|jr8tj|j|n|j|j	||WnHt
k
ry|j|j	||Wntk
rtdYnXYnXdS)Nz%unable to resolve link inside archive)
rXr|symlinkrr%rkrlinkrrsymlink_exceptionrr
)rrrr5r5r6rs

zTarFile.makelinkcCsttdrtjdkr|j}|j}|sytr<tj|jd}Wntk
rRYnXyt	rjt	j
|jd}Wntk
rYnXy4|jrttdrtj
|||ntj|||Wntk
rtdYnXdS)Ngeteuidrr$lchownzcould not change owner)rr|rr*r)rZgetgrnamr,rrgetpwnamr+rXrrrr
)rrrrgur5r5r6rs(z
TarFile.chowncCs>ttdr:ytj||jWntk
r8tdYnXdS)Nrzcould not change mode)rr|rrhrr
)rrrr5r5r6rs

z
TarFile.chmodcCsHttdsdSytj||j|jfWntk
rBtdYnXdS)Nrz"could not change modification time)rr|rr(rr
)rrrr5r5r6rs
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)rrvrrrrrZrrr1rvrorrrHrrtrurwrsrrt)rmrrwr5r5r6r;sL


zTarFile.nextcCsn|j}|dk	r"|d|j|}|r2tjj|}x6t|D]*}|rTtjj|j}n|j}||kr<|Sq<WdS)N)rindexr|r%normpathreversedr)rrr	normalizersrmember_namer5r5r6r	szTarFile._getmembercCs"x|j}|dkrPqWd|_dS)NT)r;rt)rrr5r5r6r1	s
z
TarFile._loadcCs:|jrtd|jj|dk	r6|j|kr6td|jdS)Nz%s is closedzbad operation for mode %r)rrrrqrh)rrhr5r5r6r;	szTarFile._checkcCs`|jr.djtdtjj|j|jf}d}n
|j}|}|j||dd}|dkr\t	d||S)NrT)rrzlinkname %r not found)
rXrrr|r%rrrrr)rrrlimitrr5r5r6rD	s zTarFile._find_link_targetccs|jr|jEdHdSd}|jdk	r:|j}|d7}|VxN|t|jkrV|j|}n"|jst|j}|sxd|_dSndS|d7}|Vq<WdS)Nrr#T)rtrsrvr;r/)rrrr5r5r6__iter__W	s&
zTarFile.__iter__cCs||jkrt|tjddS)N)file)rprormstderr)rlevelmsgr5r5r6rv	s
zTarFile._dbgcCs|j|S)N)r)rr5r5r6	__enter__|	szTarFile.__enter__cCs,|dkr|jn|js"|jjd|_dS)NT)rrrr)rrr	tracebackr5r5r6__exit__	s


zTarFile.__exit__)
NryNNNNNNrNNNN)ryN)ryNr)ryNr)ryNN)NNN)T)NTN)N)rN)rT)TF)NF)N)7rqrrrsrprnrorqrrPrr3r4rrrrrrerrryrrrrzrrrrrrKrrrrrrrrrrrrrrrr;rrrrrrrrr5r5r5r6rist
lZ!

d =
(&
0
	6


	cCs.yt|}|jdStk
r(dSXdS)NTF)rrr)rrr5r5r6r	scCsddl}d}|j|d}|jdddddd	|j}|jd
ddd
d|jdddd0dd|jdddd1dd|jddddd|j}|jr|j}t|rt|d }|jt	|jt
jdWdQRX|jrt	dj
|n|jd d!j
|n|jrP|j}t|r:tj|d"}|j|jd#WdQRXn|jd d!j
|n|jrt|jd krz|jd}tj}n,t|jd$kr|j\}}n|jd |jt|rtj|d"}|j|d%WdQRX|jr|d&krd'j
|}	nd(j
||}	t	|	n|jd d!j
|n|jr|jjd}
tjj|
\}}d)d)d*d*d+d+d+d+d,}
||
krld-|
|nd.}|j}tj|
| }x|D]}|j|qWWdQRX|jrt	d/j
|
n|jd |jdS)2Nrz3A simple command line interface for tarfile module.)descriptionz-vz	--verbose
store_trueFzVerbose output)actiondefaulthelpz-lz--list	<tarfile>zShow listing of a tarfile)metavarrz-ez	--extract+<output_dir>zExtract tarfile into target dir)nargsrrz-cz--create<name><file>zCreate tarfile from sourcesz-tz--testzTest if a tarfile is validry)rz{!r} is a tar archive.r#z{!r} is not a tar archive.
zr:*)rr$)r%rz{!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.)rr)rr)argparseArgumentParseradd_argumentZadd_mutually_exclusive_group
parse_argsZtestrrrrormrrrPexitrKrrr/r|curdirZformat_helprZcreatepopr%splitextr)rrparserrAargsr\rZtfrrZtar_name_ZextZcompressionsZtar_modeZ	tar_files	file_namer5r5r6main	s









r__main__)r%r&r'r(r)r*r+r,)`version
__author__Z__date__Z	__cvsid____credits__builtinsrrlrmr|rrWrfrrSrr?rrrrNotImplementedErrorrr	NameError__all__r0rrrrrrrrr$rYrWr[r]rr_ZCONTTYPErrr%r
rr4r
rrrr8rUr)rRrFrrErSrrgetfilesystemencodingr7r<rKrQrUrXrgrp	Exceptionrr
rrr	rrtrurvrHrwrxrobjectrrBufferedReaderrrrrrrqr5r5r5r6<module> s



wh,Z


OHA YOOOO