Viewing File: /opt/alt/python35/lib64/python3.5/__pycache__/tarfile.cpython-35.opt-2.pyc



]k@sdZdZdZdZdZddlmZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZyddlZddlZWnek
rdZZYnXeefZyeef7ZWnek
rYnXdd	d
dgZdZd
ZedZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/d Z0dZ1d!Z2d"Z3e2Z4e"e#e$e%e(e)e*e&e'e+e,e-fZ5e"e#e*e-fZ6e+e,e-fZ7d#d$d%d&d'd(d)d*fZ8d#d$d)d*hZ9d+e:d,e:d&e:d'e;d(e;d%e;iZ<e	j=d-d.fkrd/Z>nej?Z>d0d1Z@d2d3ZAd4d5ZBd6e4d7d8ZCd9d:ZDded;d<ZEd=d>ZFd?d@ZGGdAddeHZIGdBdCdCeIZJGdDdEdEeIZKGdFdGdGeIZLGdHdIdIeIZMGdJdKdKeIZNGdLdMdMeNZOGdNdOdOeNZPGdPdQdQeNZQGdRdSdSeNZRGdTdUdUeNZSGdVdWdWZTGdXdYdYZUGdZd[d[eVZWGd\d]d]eVZXGd^d_d_e
jYZZGd`d	d	eVZ[GdaddeVZ\GdbdcdcZ]ddd
Z^e\jZdedfZ_e`dgkre_dS)hz0.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_tarfileTarErrorsisustar  sustar00d01234567LKSxgXpathlinkpathsizemtimeuidgidunamegnameZatimectimentZcezutf-8cCs2|j||}|d||t|tS)N)encodelenNUL)slengthencodingerrorsr+,/opt/alt/python35/lib64/python3.5/tarfile.pystnsr-cCs;|jd}|dkr+|d|}|j||S)Nsr)finddecode)r'r)r*pr+r+r,ntssr2cCs|ddkrd}x:tt|dD]"}|dK}|||d7}q-W|ddkrdt|d|}nRy1t|dd}t|jpd	d}Wntk
rtd
YnX|S)Nrrasciistrict0zinvalid header)r3r4)ranger%r2intstrip
ValueErrorInvalidHeaderError)r'nir+r+r,ntis

rAr5cCsd|kod|dknrNtd|dt|fdt}n|tkrd|d|kod|dknr|dkrtdg}ntdg}d||}xEt|dD]$}|jd|d@|dL}qWntd	|S)
Nrr5rz%0*or7r6r3r4zoverflow in number field)bytesr;r&
GNU_FORMAT	bytearrayr:insertr=)r?digitsformatr'r@r+r+r,itns$*9rHcCsBdttjd|}dttjd|}||fS)Nr6Z
148B8x356BZ
148b8x356b)sumstructunpack_from)bufZunsigned_chksumZ
signed_chksumr+r+r,calc_chksumss	rMc	Cs|dkrdS|dkr0tj||dSd}t||\}}xNt|D]@}|j|}t||kr|d|j|qXW|dkr|j|}t||kr|d|j|dS)Nrizunexpected end of datai@)shutilcopyfileobjdivmodr:readr%write)	srcdstr(	exceptionBUFSIZEblocks	remainderbrLr+r+r,rPs$
rPcCs,ddl}|jdtdtj|S)Nrz$deprecated in favor of stat.filemoder)warningswarnDeprecationWarningstatfilemode)moder[r+r+r,r_s	
r_cCsPttjdd}|dk	r<|j|dj|}t|dddS)Nr)backslashreplaceend )getattrsysstdoutr$r0print)r'r)r+r+r,_safe_printsrhc@seZdZdS)rN)__name__
__module____qualname__r+r+r+r,rsc@seZdZdS)ExtractErrorN)rirjrkr+r+r+r,rlsrlc@seZdZdS)	ReadErrorN)rirjrkr+r+r+r,rmsrmc@seZdZdS)CompressionErrorN)rirjrkr+r+r+r,rnsrnc@seZdZdS)StreamErrorN)rirjrkr+r+r+r,rosroc@seZdZdS)HeaderErrorN)rirjrkr+r+r+r,rpsrpc@seZdZdS)EmptyHeaderErrorN)rirjrkr+r+r+r,rqsrqc@seZdZdS)TruncatedHeaderErrorN)rirjrkr+r+r+r,rr srrc@seZdZdS)EOFHeaderErrorN)rirjrkr+r+r+r,rs#srsc@seZdZdS)r>N)rirjrkr+r+r+r,r>&sr>c@seZdZdS)SubsequentHeaderErrorN)rirjrkr+r+r+r,rt)srtc@s@eZdZddZddZddZddZd	S)

_LowLevelFilecCsbdtjdtjtjBtjBi|}ttdrF|tjO}tj||d|_dS)NrwO_BINARYi)	osO_RDONLYO_WRONLYO_CREATO_TRUNChasattrrxrfd)selfnamer`r+r+r,__init__6s	
z_LowLevelFile.__init__cCstj|jdS)N)rycloser)rr+r+r,r?sz_LowLevelFile.closecCstj|j|S)N)ryrRr)rrr+r+r,rRBsz_LowLevelFile.readcCstj|j|dS)N)ryrSr)rr'r+r+r,rSEsz_LowLevelFile.writeN)rirjrkrrrRrSr+r+r+r,ru0s	ruc@seZdZddZddZddZddZd	d
ZddZd
dZ	ddZ
dddZdddZddZ
ddZdS)_Streamc	Cs{d|_|dkr-t||}d|_|dkrQt|}|j}|pZd|_||_||_||_||_d|_	d|_
d|_y|dkr,yddl}Wnt
k
rtdYnX||_|jd|_|d	kr|j|j|_qI|jn|d
kryddl}Wnt
k
rhtdYnX|d	krd|_|j|_t|_qI|j|_n|dkr-yddl}Wnt
k
rtd
YnX|d	krd|_|j|_|j|_qI|j|_n|dkrItd|Wn*|jsf|jjd|_YnXdS)NTF*rgzzzlib module is not availablervbz2zbz2 module is not availablexzzlzma module is not availabletarzunknown compression type %r) _extfileobjru_StreamProxygetcomptyperr`comptypefileobjbufsizerLposclosedzlibImportErrorrncrc32crc
_init_read_gzerrorrV_init_write_gzrdbufBZ2DecompressorcmpOSError
BZ2CompressorlzmaLZMADecompressor	LZMAErrorLZMACompressorr)	rrr`rrrrrrr+r+r,rSsl									
	


	
		
	z_Stream.__init__cCs't|dr#|jr#|jdS)Nr)r~rr)rr+r+r,__del__sz_Stream.__del__cCs|jjd|jj|jj|jjd|_tjdtt	j	}|j
d|d|jjdr|jdd
|_|j
|jj
dd	tdS)N	rz<Lssz.gzz
iso-8859-1replace)rcompressobjDEFLATED	MAX_WBITS
DEF_MEM_LEVELrrJpackr;time_Stream__writerendswithr$r&)rZ	timestampr+r+r,rs
	z_Stream._init_write_gzcCsq|jdkr*|jj||j|_|jt|7_|jdkr`|jj|}|j|dS)Nrr)	rrrrrr%rcompressr)rr'r+r+r,rSsz
_Stream.writecCsk|j|7_xUt|j|jkrf|jj|jd|j|j|jd|_qWdS)N)rLr%rrrS)rr'r+r+r,Z__writes z_Stream.__writecCs|jr
dSd|_z|jdkrO|jdkrO|j|jj7_|jdkr|jr|jj|jd|_|jdkr|jjtj	d|j
|jjtj	d|jd@Wd|js|jj
XdS)NTrwrrrz<Ll)rr`rrLrflushrrSrJrrrrr)rr+r+r,rs			'	z
_Stream.closecCsO|jj|jj|_d|_|jddkrFtd|jddkrgtdt|jd}|jd|d	@rt|jdd
t|jd}|j	||d@rx'|jd}|s|t
krPqW|d@r4x'|jd}|s/|t
kr
Pq
W|d@rK|jddS)
Nrrsznot a gzip filerszunsupported compression methodr6r5rN)r
decompressobjrrr
_Stream__readrmrnordrRr&)rflagZxlenr'r+r+r,rs.	

,



z_Stream._init_read_gzcCs|jS)N)r)rr+r+r,tellsz_Stream.tellrcCs|||jdkrit||j|j\}}x$t|D]}|j|jq?W|j|ntd|jS)Nrz seeking backwards is not allowed)rrQrr:rRro)rrrXrYr@r+r+r,seeksz_Stream.seekNcCsy|dkrQg}x*|j|j}|s.P|j|qWdj|}n|j|}|jt|7_|S)Nr)_readrappendjoinrr%)rrtrLr+r+r,rRsz_Stream.readcCs|jdkr|j|St|j}x||kr|j|j}|sSPy|jj|}Wn!|jk
rtdYnX|j|7_|t|7}q.W|jd|}|j|d|_|S)Nrzinvalid compressed data)	rrr%rrr
decompressrVrm)rrcrLr+r+r,rs 
z
_Stream._readcCst|j}xK||kr\|jj|j}|s:P|j|7_|t|7}qW|jd|}|j|d|_|S)N)r%rLrrRr)rrrrLr+r+r,Z__read,sz_Stream.__read)rirjrkrrrrSrrrrrrRrrr+r+r+r,rHsF
	
rc@s@eZdZddZddZddZddZd	S)
rcCs"||_|jjt|_dS)N)rrR	BLOCKSIZErL)rrr+r+r,rAs	z_StreamProxy.__init__cCs|jj|_|jS)N)rrRrL)rrr+r+r,rREsz_StreamProxy.readcCsj|jjdrdS|jdddkrL|jdddkrLd	S|jjdrbdSd
SdS)NsrrrsBZhr
s1AY&SYr]7zXZrr)rr)rL
startswith)rr+r+r,rIs2z_StreamProxy.getcomptypecCs|jjdS)N)rr)rr+r+r,rSsz_StreamProxy.closeN)rirjrkrrRrrr+r+r+r,r<s
rc@seZdZdddZddZddZdd	Zd
dZdd
Ze	j
ddZdddZddZ
ddZdS)_FileInFileNcCs#||_||_||_d|_t|dd|_d|_|dkr]d|fg}d|_g|_d}|j}xp|D]h\}}||kr|jj	d||df|jj	d||||f||7}||}qW||jkr|jj	d||jdfdS)NrrFT)
roffsetrpositionrdrr	map_indexmapr)rrrrZ	blockinfoZlastposZrealposr+r+r,r`s(								 
z_FileInFile.__init__cCsdS)Nr+)rr+r+r,rysz_FileInFile.flushcCsdS)NTr+)rr+r+r,readable|sz_FileInFile.readablecCsdS)NFr+)rr+r+r,writablesz_FileInFile.writablecCs
|jjS)N)rseekable)rr+r+r,rsz_FileInFile.seekablecCs|jS)N)r)rr+r+r,rsz_FileInFile.tellcCs|tjkr0tt|d|j|_n|tjkr|dkrgt|j|d|_qt|j||j|_nC|tjkrtt|j||jd|_ntd|jS)NrzInvalid argument)	ioSEEK_SETminmaxrrSEEK_CURSEEK_ENDr=)rrwhencer+r+r,rs!(z_FileInFile.seekc	Csf|dkr|j|j}nt||j|j}d}x!|dkraxs|j|j\}}}}||jko|knrPqP|jd7_|jt|jkrPd|_qPWt|||j}|r7|jj||j||jj|}t||kr*t	d||7}n|t
|7}||8}|j|7_qAW|S)Nrrrzunexpected end of data)rrrrrr%rrrRrmr&)	rrrLdatastartstoprr(rZr+r+r,rRs.


z_FileInFile.readcCs5|jt|}||dt|<t|S)N)rRr%)rrZrLr+r+r,readintosz_FileInFile.readintocCs
d|_dS)NT)r)rr+r+r,rsz_FileInFile.close)rirjrkrrrrrrrrrrRrrr+r+r+r,rZsrcs"eZdZfddZS)ExFileObjectcs5t|j|j|j|j}tj|dS)N)rroffset_datarsparsesuperr)rtarfiletarinfor)	__class__r+r,rszExFileObject.__init__)rirjrkrr+r+)rr,rsrc@sJeZdZdhZdddZddZddZeeeZddZ	ddZ
ee	e
Zd d!Zd"d#Z
eed$d%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)irrr`rrrrchksumtypelinknamer r!devmajordevminorrrpax_headersrr_sparse_structs_link_targetrcCs||_d|_d|_d|_d|_d|_d|_t|_d|_	d|_
d|_d|_d|_
d|_d|_d|_i|_dS)Nirr)rr`rrrrrREGTYPErrr r!rrrrrr)rrr+r+r,rs"																zTarInfo.__init__cCs|jS)N)r)rr+r+r,_getpathszTarInfo._getpathcCs
||_dS)N)r)rrr+r+r,_setpathszTarInfo._setpathcCs|jS)N)r)rr+r+r,_getlinkpathszTarInfo._getlinkpathcCs
||_dS)N)r)rrr+r+r,_setlinkpathszTarInfo._setlinkpathcCs d|jj|jt|fS)Nz<%s %r at %#x>)rririd)rr+r+r,__repr__szTarInfo.__repr__cCsd|jd|jd@d|jd|jd|jd|jd|jd	|jd
|jd|j	d|j
d
|jd|ji
}|d	t
kr|djdr|dd7<|S)Nrr`irrrrrrrr r!rr/)rr`rrrrrrrr r!rrDIRTYPEr)rinfor+r+r,get_infos 	
										$zTarInfo.get_infosurrogateescapecCsv|j}|tkr+|j|||S|tkrJ|j|||S|tkrf|j||StddS)Nzinvalid format)rUSTAR_FORMATcreate_ustar_headerrCcreate_gnu_header
PAX_FORMATcreate_pax_headerr=)rrGr)r*rr+r+r,tobufsz
TarInfo.tobufcCst|d<t|dj||tkr8tdt|dj||tkr|j|d||\|d<|d<|j|t||S)Nmagicrzlinkname is too longrprefix)	POSIX_MAGICr%r$LENGTH_LINKr=LENGTH_NAME_posix_split_name_create_headerr)rrr)r*r+r+r,r*s
""'zTarInfo.create_ustar_headercCst|d<d}t|dj||tkrR||j|dt||7}t|dj||tkr||j|dt||7}||j|t	||S)Nrrrr)
	GNU_MAGICr%r$r_create_gnu_long_headerGNUTYPE_LONGLINKrGNUTYPE_LONGNAMErrC)rrr)r*rLr+r+r,r7s
" " zTarInfo.create_gnu_headerc
Cst|d<|jj}xddtfddtfddfD]\}}}||kr\q>y||jd	d
Wn#tk
r||||<w>YnXt|||kr>||||<q>WxdD]}\}}||krd||<q||}d|kod|dkns,t|t	rt
|||<d||<qW|rh|j|t|}	nd}	|	|j
|td	dS)Nrrrrrr  r!r7r8rr5rrrrrrr)r r r)r!r!rrr5rr5rrrr)rrr	r
)rrcopyrrr$UnicodeEncodeErrorr%
isinstancefloatstr_create_pax_generic_headerXHDTYPErr)
rrr)rrZhnamer(rFvalrLr+r+r,rEs4



4zTarInfo.create_pax_headercCs|j|tdS)Nzutf-8)rXGLTYPE)clsrr+r+r,create_pax_global_headervsz TarInfo.create_pax_global_headercCs|jd}xtdt|D]u}dj|d|}dj||d}t|j||tkr%t|j||tkr%Pq%Wtd||fS)Nrrzname is too long)splitr:r%rr$
LENGTH_PREFIXrr=)rrr)r*Z
componentsr@rr+r+r,r|szTarInfo._posix_split_namecCst|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) Nrrrr`rir5rrrrrs        rrrr rr!rrrr	z%dsrilz%06or7ieii)r-getrHrrrJrrrrMrB)rrGr)r*partsrLrr+r+r,rs&$/zTarInfo._create_headercCs=tt|t\}}|dkr9|t|t7}|S)Nr)rQr%rr&)ZpayloadrXrYr+r+r,_create_payloadszTarInfo._create_payloadcCsm|j||t}i}d|d<||d<t||d<t|d<|j|t|||j|S)Nz
././@LongLinkrrrr)r$r&r%rrrr)rrrr)r*rr+r+r,rs


zTarInfo._create_gnu_long_headercCsd}xJ|jD]<\}}y|jddWqtk
rNd}PYqXqWd}|ri|d7}x|jD]\}}|jd}|r|j|d}n|jd}t|t|d}d	}	}
x-|tt|
}	|	|
krP|	}
qW|tt|
d
d|d|d
7}qvWi}d|d<||d<t||d<t|d<|j|td
d|j	|S)NFzutf-8r8Trs21 hdrcharset=BINARY
rrrr7 =s
z././@PaxHeaderrrrrr)
itemsr$rr%rrBrrrr)rrrr)binarykeywordvaluerecordslr?r1rr+r+r,rs<




1


z"TarInfo._create_pax_generic_headercCsNt|dkrtdt|tkr<td|jttkr]tdt|dd}|t|krt	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'|jjdr't|_|jtkrd}g}xtdD]u}	y<t|||d}
t||d|d}Wntk
rPYnX|j|
|f|d7}qOWt|d}t|dd}
|||
f|_ |j!r!|jj"d|_|rJ|jt#krJ|d|j|_|S)Nrzempty headerztruncated headerzend of file headerzbad checksumrlt|ii	i)iIiQiYirirriii)$r%rqrrrcountr&rsrArMr>r2rr`rrrrrrrr r!rrAREGTYPErrGNUTYPE_SPARSEr:r=rboolrisdirrstrip	GNU_TYPES)rrLr)r*robjrrstructsr@rnumbytes
isextendedorigsizer+r+r,frombufsZ		!	"
zTarInfo.frombufcCsP|jjt}|j||j|j}|jjt|_|j|S)N)	rrRrr7r)r*rr_proc_member)rrrLr2r+r+r,fromtarfile5szTarInfo.fromtarfilecCst|jttfkr"|j|S|jtkr>|j|S|jtttfkrc|j	|S|j
|SdS)N)rrr
_proc_gnulongr-_proc_sparserrSOLARIS_XHDTYPE	_proc_pax
_proc_builtin)rrr+r+r,r8Js


zTarInfo._proc_membercCsu|jj|_|j}|js6|jtkrL||j|j7}||_|j	|j
|j|j|S)N)
rrrisregrSUPPORTED_TYPES_blockrr_apply_pax_inforr)r*)rrrr+r+r,r>Ws		zTarInfo._proc_builtincCs|jj|j|j}y|j|}Wntk
rQtdYnX|j|_|jt	krt
||j|j|_
n*|jtkrt
||j|j|_|S)Nz missing or bad subsequent header)rrRrArr9rprtrrrr2r)r*rrr)rrrLnextr+r+r,r:hs
zTarInfo._proc_gnulongc
Cs#|j\}}}|`x|r|jjt}d}xtdD]}y<t|||d}t||d|d}	Wntk
rPYnX|r|	r|j||	f|d7}qFWt|d}qW||_	|jj
|_|j|j|j
|_||_
|S)Nrrr*i)rrrRrr:rAr=rr.rrrrArr)
rrr3r5r6rLrr@rr4r+r+r,r;~s(	"
		zTarInfo._proc_sparsecCs|jj|j|j}|jtkr9|j}n|jj}tj	d|}|dk	r|j
djd|d<|jd}|dkr|j
}nd}tjd}d}x|j||}|sP|j\}	}
t|	}	||jdd|jd|	d}|j|
dd|j}
|
tkrt|j|||j
|j}n|j|dd|j}|||
<||	7}qWy|j|}Wntk
rtd	YnXd
|kr|j||n_d|kr|j|||n=|jdd
krY|jddkrY|j||||jttfkr|j||j
|j|j |_ d|kr|j!}
|j"s|jt#kr|
|j|j7}
|
|_ |S)Ns\d+ hdrcharset=([^\n]+)\nrzutf-8
hdrcharsetZBINARYs(\d+) ([^=]+)=rrz missing or bad subsequent headerzGNU.sparse.mapzGNU.sparse.sizezGNU.sparse.major1zGNU.sparse.minorr9r)$rrRrArrrrrresearchgroupr0rr)compilematchgroupsr;rbr_decode_pax_fieldr*PAX_NAME_FIELDSr9rprt_proc_gnusparse_01_proc_gnusparse_00_proc_gnusparse_10rr<rBrrr?r@)rrrLrrKrEr)Zregexrr(rr rCrr+r+r,r=s`.	

*		zTarInfo._proc_paxcCsg}x6tjd|D]"}|jt|jdqWg}x6tjd|D]"}|jt|jdqXWtt|||_dS)Ns\d+ GNU.sparse.offset=(\d+)\nrs\d+ GNU.sparse.numbytes=(\d+)\n)rGfinditerrr;rIlistzipr)rrCrrLZoffsetsrKr4r+r+r,rPs  zTarInfo._proc_gnusparse_00cCsVdd|djdD}tt|ddd|ddd|_dS)NcSsg|]}t|qSr+)r;).0xr+r+r,
<listcomp>s	z.TarInfo._proc_gnusparse_01.<locals>.<listcomp>zGNU.sparse.map,rr)rrSrTr)rrCrrr+r+r,rOs zTarInfo._proc_gnusparse_01cCsd}g}|jjt}|jdd\}}t|}xgt||dkrd|kr}||jjt7}|jdd\}}|jt|qEW|jj|_t	t
|ddd|ddd|_dS)Ns
rr)rrRrrr;r%rrrrSrTr)rrCrrZfieldsrrLZnumberr+r+r,rQszTarInfo._proc_gnusparse_10c
Csx|jD]\}}|dkr8t|d|q
|dkr]t|dt|q
|dkrt|dt|q
|tkr
|tkryt||}Wntk
rd}YnX|dkr|jd}t|||q
W|j|_dS)NzGNU.sparse.namerzGNU.sparse.sizerzGNU.sparse.realsizerr)	rsetattrr;
PAX_FIELDSPAX_NUMBER_FIELDSr=r0rr)rrr)r*rr r+r+r,rB!s"
zTarInfo._apply_pax_infocCs=y|j|dSWn"tk
r8|j||SYnXdS)Nr8)r0UnicodeDecodeError)rr r)Zfallback_encodingZfallback_errorsr+r+r,rM8s
zTarInfo._decode_pax_fieldcCs-t|t\}}|r%|d7}|tS)Nr)rQr)rr+rXrYr+r+r,rA@s
zTarInfo._blockcCs
|jtkS)N)r
REGULAR_TYPES)rr+r+r,r?Isz
TarInfo.isregcCs
|jS)N)r?)rr+r+r,isfileKszTarInfo.isfilecCs
|jtkS)N)rr)rr+r+r,r/Msz
TarInfo.isdircCs
|jtkS)N)rSYMTYPE)rr+r+r,issymOsz
TarInfo.issymcCs
|jtkS)N)rLNKTYPE)rr+r+r,islnkQsz
TarInfo.islnkcCs
|jtkS)N)rCHRTYPE)rr+r+r,ischrSsz
TarInfo.ischrcCs
|jtkS)N)rBLKTYPE)rr+r+r,isblkUsz
TarInfo.isblkcCs
|jtkS)N)rFIFOTYPE)rr+r+r,isfifoWszTarInfo.isfifocCs
|jdk	S)N)r)rr+r+r,issparseYszTarInfo.issparsecCs|jtttfkS)N)rrcrerg)rr+r+r,isdev[sz
TarInfo.isdevN)rr`rrrrrrrr r!rrrrrrrrr)3rirjrk	__slots__rrrpropertyrrrrrrDEFAULT_FORMATENCODINGrrrrclassmethodrrstaticmethodrrrrr7r9r8r>r:r;r=rPrOrQrBrMrAr?r^r/r`rbrdrfrhrirjr+r+r+r,rs^
1
3?
f	c@seZdZdZdZdZdZeZe	Z
dZeZ
eZddddddddddddddZeddded	d
ZeddddZeddd
ddZeddd
ddZedddddZddddddddiZddZddZd d!Zd"d#Zdddd$d%Zd&d'dd(d)Zdd&dd*dd+d,Zdd-d.Z d/dd0dd1d2Z!d3d&d0dd4d5Z"d6d7Z#d&dd8d9Z$d:d;Z%d<d=Z&d>d?Z'd@dAZ(dBdCZ)dDdEZ*dFdGZ+dHdIZ,dJdKZ-dLdMZ.dddNdOZ/dPdQZ0ddRdSZ1dTdUZ2dVdWZ3dXdYZ4dZd[Z5d\d]Z6dS)^rrFrNrvrc
Csddddddddi}
||
kr6td	||_|
||_|s|jdkrtjj|rd|_d|_t||j}d
|_n`|dkrt|drt	|j
ttfr|j
}t|dr|j|_d
|_|rtjj
|nd|_
||_|dk	rC||_|dk	rX||_|dk	rm||_|dk	r||_|dk	r||_|	|_|
dk	r|jtkr|
|_n	i|_|dk	r||_|dk	r||_d
|_g|_d
|_|jj|_i|_y:|jdkrZd|_|j |_|jdkrx|jj!|jy&|jj"|}|jj#|Wqlt$k
r|jj!|jPYqlt%k
r}zt&t|WYdd}~XqlXqlW|jdkrid
|_|jri|jj'|jj(}|jj)||jt*|7_Wn*|js|jj+d
|_YnXdS)Nrvrbazr+brwwbrVxbz!mode must be 'r', 'a', 'w' or 'x'Frr`T)rrrwrV),r=r`_moderyrexists	bltn_openrr~r
rrrBabspathrrGrdereferenceignore_zerosr)r*rrdebug
errorlevelrmembers_loadedrrinodesfirstmemberrCrr9rrsrprmrrrSr%r)rrr`rrGrryrzr)r*rr{r|ZmodeserLr+r+r,rys	
"				!															
)			
	zTarFile.__init__csY|r|rtd|dkrfdd}xtjd|D]}tj|}|dk	r|j}	y||d||SWqNttfk
r}
z!|dk	r|j|	wNWYdd}
~
XqNXqNWtdnSd|kr}|jdd	\}}|p#d}|p/d
}|jkrZtj|}ntd||||||Sd|kr'|jdd	\}}|pd}|pd
}|dkrtdt	|||||}y||||}
Wn|j
YnXd|
_|
S|dkrIj||||StddS)Nznothing to openrvr:*csj|dkS)Ntaropen)	OPEN_METH)r)rr+r,not_compressedsz$TarFile.open.<locals>.not_compressedkeyz%file could not be opened successfully:rrzunknown compression type %r|rwzmode must be 'r' or 'w'FrrrVzundiscernible mode)rvr)rvrw)rrrwrV)
r=sortedrrdrrmrnrrrrrr)rrr`rrkwargsrrfuncZ	saved_posrr_streamrr+)rr,rsP%

	zTarFile.opencKs+|dkrtd|||||S)NrvrrrwrVz!mode must be 'r', 'a', 'w' or 'x')rvrrrwrV)r=)rrr`rrr+r+r,rAszTarFile.taropenrcKs)|d
krtdyddl}|jWn$ttfk
rUtdYnXy |j||d||}Wn9tk
r|dk	r|dkrtdYnXy|j||||}WnKtk
r|j	|dkrtdYn|j	YnXd	|_
|S)NrvrwrVzmode must be 'r', 'w' or 'x'rzgzip module is not availablerZznot a gzip fileF)rvrwrV)r=gzipZGzipFilerAttributeErrorrnrrmrrr)rrr`r
compresslevelrrrr+r+r,gzopenIs2 



	zTarFile.gzopencKs|d
krtdyddl}Wntk
rHtdYnX|j|pX||d|}y|j||||}WnQttfk
r|j|dkrt	dYn|jYnXd	|_
|S)NrvrwrVzmode must be 'r', 'w' or 'x'rzbz2 module is not availablerznot a bzip2 fileF)rvrwrV)r=rrrnBZ2FilerrEOFErrorrrmr)rrr`rrrrrr+r+r,bz2openks(
	

	zTarFile.bz2opencKs|d
krtdyddl}Wntk
rHtdYnX|j|pX||d|}y|j||||}WnT|jtfk
r|j|dkrt	dYn|jYnXd	|_
|S)NrvrwrVzmode must be 'r', 'w' or 'x'rzlzma module is not availablepresetznot an lzma fileF)rvrwrV)r=rrrnLZMAFilerrrrrmr)rrr`rrrrrr+r+r,xzopens&


	zTarFile.xzopenrrrrrrrrc
Cs|jr
dSd|_zz|jdkr|jjttd|jtd7_t|jt\}}|dkr|jjtt|Wd|j	s|jj
XdS)NTrrrwrVrr)rrrwrV)rr`rrSr&rrrQ
RECORDSIZErr)rrXrYr+r+r,rs			z
TarFile.closecCs/|j|}|dkr+td||S)Nzfilename %r not found)
_getmemberKeyError)rrrr+r+r,	getmemberszTarFile.getmembercCs$|j|js|j|jS)N)_checkr~_loadr})rr+r+r,
getmemberss
	
zTarFile.getmemberscCsdd|jDS)NcSsg|]}|jqSr+)r)rUrr+r+r,rWs	z$TarFile.getnames.<locals>.<listcomp>)r)rr+r+r,getnamesszTarFile.getnamescCsI|jd|dk	r"|j}|dkr4|}tjj|\}}|jtjd}|jd}|j}||_	|dkrt
tdr|jrtj|}qtj
|}ntj|j}d}|j}t
j|r|j|jf}	|jrd|jdkrd|	|jkrd||j|	krdt}
|j|	}qt}
|	dr||j|	<nt
j|rt}
nst
j|rt}
n[t
j|rt}
tj|}n4t
j|rt }
nt
j!|rt"}
ndS||_||_#|j$|_%|j&|_'|
tkrT|j(|_)n	d|_)|j*|_+|
|_,||_-t.ryt.j/|j%d|_0Wnt1k
rYnXt2ryt2j3|j'd|_4Wnt1k
rYnX|
t t"fkrEt
tdrEt
tdrEtj5|j6|_7tj8|j6|_9|S)	Nawxrlstatrrrmajorminor):rrryr
splitdriverseplstriprrr~ryrr^fstatfilenost_modeS_ISREGst_inost_devst_nlinkrrarS_ISDIRrS_ISFIFOrgS_ISLNKr_readlinkS_ISCHRrcS_ISBLKrer`st_uidrst_gidrst_sizerst_mtimerrrpwdgetpwuidr rgrpgetgrgidr!rst_rdevrrr)rrarcnamerZdrvrZstatresrZstmdinoderr+r+r,
gettarinfos~	
			"
									

zTarFile.gettarinfoTr}cCsQ|j|dkr|}x.|D]&}|rttj|jtd|jpZ|j|jpi|jf|j	s|j
rtdd|j|jfntd|j
tdtj|jddt|j|jrdnd|rB|jr%td	|j|jrBtd
|jtq#WdS)Nz%s/%sz%10sz%d,%dz%10dz%d-%02d-%02d %02d:%02d:%02drrrz-> zlink to )rrhr^r_r`r rr!rrdrfrrrr	localtimerrr/r`rrbrg)rverboser}rr+r+r,rSCs*

#zTarFile.listfilterc	
Cs|jd|dkr|}|dk	rnddl}|jdtd||rn|jdd|dS|jdk	rtjj||jkr|jdd|dS|jd||j	||}|dkr|jdd|dS|dk	r2||}|dkr2|jdd|dS|j
rjt|d	}|j||WdQRXn|j
r|j||rxatj|D]@}|jtjj||tjj||||d
|qWn
|j|dS)Nrrzuse the filter argument insteadrztarfile: Excluded %rztarfile: Skipped %rrztarfile: Unsupported type %rrqr)rr[r\r]_dbgrryrrxrr?rwaddfiler/listdiraddr)	rrrZ	recursiveZexcluderr[rfr+r+r,rcsB
	
*
*zTarFile.addcCs|jdtj|}|j|j|j|j}|jj||jt	|7_|dk	rt
||j|jt|jt
\}}|dkr|jjtt
||d7}|j|t
7_|jj|dS)Nrrr)rrrrGr)r*rrSrr%rPrrQrr&r}r)rrrrLrXrYr+r+r,rs

zTarFile.addfile.
numeric_ownercCsUg}|dkr|}xb|D]Z}|jrV|j|tj|}d|_|j||d|jd|qW|jddd|jx|D]}tjj	||j
}y:|j||d||j|||j
||Wqtk
rL}z.|jdkr&n|jdd|WYdd}~XqXqWdS)	Ni	set_attrsrrcSs|jS)N)r)rrr+r+r,<lambda>sz$TarFile.extractall.<locals>.<lambda>rztarfile: %s)r/rrr`extractsortreverseryrrrchownutimechmodrlr|r)rrr}rZdirectoriesrdirpathrr+r+r,
extractalls,

	

zTarFile.extractallrcCsd|jdt|tr.|j|}n|}|jr[tjj||j|_	y2|j
|tjj||jd|d|Wntk
r}zc|j
dkrnI|jdkr|jdd|jn |jdd|j|jfWYdd}~XnNtk
r_}z.|j
dkr9n|jdd|WYdd}~XnXdS)Nrvrrrrztarfile: %sztarfile: %s %r)rr
rrrbryrrrr_extract_memberrrr|filenamerstrerrorrl)rmemberrrrrrr+r+r,rs(	
!2zTarFile.extractcCs|jdt|tr.|j|}n|}|jsO|jtkr_|j||S|jsw|j	rt|j
trtdq|j
|j|SndSdS)Nrvz'cannot extract (sym)link as file object)rr
rrr?rr@
fileobjectrbr`rrroextractfile_find_link_target)rrrr+r+r,rs
zTarFile.extractfilecCs|jd}|jdtj}tjj|}|r\tjj|r\tj||jst|j	r|j
dd|j|jfn|j
d|j|j
r|j||n|jr|j||n|jr|j||n|js|jr2|j||n]|jsJ|j	r]|j||n2|jtkr|j||n|j|||r|j||||j	s|j|||j||dS)Nrrz%s -> %s)r0rryrrdirnamervmakedirsrbr`rrrr?makefiler/makedirrhmakefifordrfmakedevmakelinkrr@makeunknownrrr)rr
targetpathrrZ	upperdirsr+r+r,r&s4
#zTarFile._extract_membercCs-ytj|dWntk
r(YnXdS)Ni)rymkdirFileExistsError)rrrr+r+r,rWs
zTarFile.makedirc
Cs|j}|j|jt|d}|jdk	rx7|jD],\}}|j|t|||tqDW|j|j|jnt|||jtWdQRXdS)Nrs)	rrrrwrrPrmrtruncate)rrrsourcetargetrrr+r+r,ras	

zTarFile.makefilecCs+|j|||jdd|jdS)Nrz9tarfile: Unknown file type %r, extracted as regular file.)rrr)rrrr+r+r,rpszTarFile.makeunknowncCs/ttdrtj|ntddS)Nmkfifozfifo not supported by system)r~ryrrl)rrrr+r+r,rxszTarFile.makefifocCsttds ttdr,td|j}|jrQ|tjO}n
|tjO}tj||tj	|j
|jdS)Nmknodrz'special devices not supported by system)r~ryrlr`rfr^S_IFBLKS_IFCHRrrrr)rrrr`r+r+r,rs 	
zTarFile.makedevcCsyj|jr%tj|j|nDtjj|jrPtj|j|n|j|j	||WnPt
k
ry|j|j	||Wntk
rtdYnXYnXdS)Nz%unable to resolve link inside archive)
r`rysymlinkrrrvrlinkrrsymlink_exceptionrrl)rrrr+r+r,rs

zTarFile.makelinkc Cs2tr.ttdr.tjdkr.|rB|j}|j}npytj|jd}Wnt	k
ry|j}YnXytj
|jd}Wnt	k
r|j}YnXyH|jrttdrtj
|||ntj|||Wn1tk
r-}ztdWYdd}~XnXdS)Ngeteuidrrlchownzcould not change owner)rr~ryrrrrgetgrnamr!rgetpwnamr r`rrrrl)rrrrgurr+r+r,rs$'	

z
TarFile.chowncCs^ttdrZytj||jWn1tk
rY}ztdWYdd}~XnXdS)Nrzcould not change mode)r~ryrr`rrl)rrrrr+r+r,rs
z
TarFile.chmodcCskttdsdSy tj||j|jfWn1tk
rf}ztdWYdd}~XnXdS)Nrz"could not change modification time)r~ryrrrrl)rrrrr+r+r,rs z
TarFile.utimecCsV|jd|jdk	r2|j}d|_|S|j|jjkr|jj|jd|jjdstdd}xy|jj	|}Wnt
k
r}z=|jr|jdd|j|f|jt
7_wWYdd}~Xn(tk
r}}za|jrJ|jdd|j|f|jt
7_wn!|jdkrktt|WYdd}~Xntk
r|jdkrtdYn|tk
r}z&|jdkrtt|WYdd}~Xn7tk
r$}ztt|WYdd}~XnXPqW|dk	rI|jj|n	d|_|S)	NZrarzunexpected end of datarz0x%X: %srz
empty fileT)rrrrrrrRrmrr9rsrzrrr>rrqrrrtr}rr~)rmrrr+r+r,rCsL
				$
$%	zTarFile.nextcCs|j}|dk	r1|d|j|}|rItjj|}xKt|D]=}|rztjj|j}n	|j}||krV|SqVWdS)N)rindexryrnormpathreversedr)rrr	normalizer}rmember_namer+r+r,r
	s	zTarFile._getmembercCs-x|j}|dkrPqWd|_dS)NT)rCr~)rrr+r+r,r!	s
z
TarFile._loadcCsQ|jrtd|jj|dk	rM|j|krMtd|jdS)Nz%s is closedzbad operation for mode %r)rrrrir`)rr`r+r+r,r+	s	zTarFile._checkcCs|jrEdjtdtjj|j|jf}d}n|j}|}|j|d|dd}|dkrt	d||S)NrrrTzlinkname %r not found)
r`rrryrrrrrr)rrrlimitrr+r+r,r4	s0		zTarFile._find_link_targetcCs$|jrt|jSt|SdS)N)r~iterr}TarIter)rr+r+r,__iter__G	s	
zTarFile.__iter__cCs&||jkr"t|dtjdS)Nfile)r{rgrestderr)rlevelmsgr+r+r,rO	szTarFile._dbgcCs|j|S)N)r)rr+r+r,	__enter__U	s
zTarFile.__enter__cCs<|dkr|jn|js/|jjd|_dS)NT)rrrr)rrr 	tracebackr+r+r,__exit__Y	s

	
zTarFile.__exit__)7rirjrkr{ryrzr|rmrGrnr)r*rrrrrrorrrrrrrrrrrrrSrrrrrrrrrrrrrrrrCrrrrrrrrr+r+r+r,r_srkZ!
d =(&0
	6
	c@s4eZdZddZddZddZdS)rcCs||_d|_dS)Nr)rr)rrr+r+r,rk	s	zTarIter.__init__cCs|S)Nr+)rr+r+r,rp	szTarIter.__iter__cCs|jdkr3|jjdk	r3|jj}nm|jt|jjkrd|jj|j}n<|jjs|jj}|sd|j_tnt|jd7_|S)NrTr)rrrrCr%r}r~
StopIteration)rrr+r+r,__next__t	s!	zTarIter.__next__N)rirjrkrrrr+r+r+r,rd	srcCs;yt|}|jdSWntk
r6dSYnXdS)NTF)rrr)rrr+r+r,r	s

cCsddl}d}|jd|}|jdddddd	d
d|j}|jdd
ddd
d|jdddddd9d
d|jdddddd:d
d|jddddd
d|j}|jro|j}t|rSt|d*}|jt	|jd t
jWdQRX|jrlt	d!j
|q|jd"d#j
|n{|jr|j}t|rtj|d$}|jd%|jWdQRXq|jd"d#j
|n|jrt|jd"kr|jd}tj}n=t|jd&kr9|j\}}n|jd"|jt|rtj|d$}|jd'|WdQRX|jr|d(krd)j
|}	nd*j
||}	t	|	q|jd"d#j
|n|jr|jjd}
tjj|
\}}d+d,d-d,d.d/d0d/d1d2d3d2d4d2d5d2i}
||
krld6|
|nd7}|j}tj|
|%}x|D]}|j|qWWdQRX|jrt	d8j
|
n|jd"|jdS);Nrz3A simple command line interface for tarfile module.descriptionz-vz	--verboseaction
store_truedefaultFhelpzVerbose outputz-lz--listmetavar	<tarfile>zShow listing of a tarfilez-ez	--extractnargs+<output_dir>zExtract tarfile into target dirz-cz--create<name><file>zCreate tarfile from sourcesz-tz--testzTest if a tarfile is validrvrz{!r} is a tar archive.rz{!r} is not a tar archive.
zr:*rrrrz{!r} file is extracted.z+{!r} file is extracted into {!r} directory.z.gzrz.tgzz.xzrz.txzz.bz2rz.tbzz.tbz2z.tb2zw:rwz{!r} file created.)rr)rr)argparseArgumentParseradd_argumentadd_mutually_exclusive_group
parse_argsZtestrrrrgrerrrGexitrSrrr%rycurdirformat_helprZcreatepoprsplitextr)rrparserrIargsrTrZtfrrZtar_name_extZcompressionsZtar_modeZ	tar_files	file_namer+r+r,main	s		
 				
	
	 	
	r#__main__)aversion
__author____date__Z	__cvsid____credits__builtinsrrwreryrrOr^rrJrrGrrrrNotImplementedErrorrr	NameError__all__r&rrrrrrrrr,rar_rcrerrgZCONTTYPErrr-rrr<rrCrrmr@r]r1rZrNrr;r[rrngetfilesystemencodingr-r2rArHrMrPr_rh	Exceptionrrlrmrnrorprqrrrsr>rtrurobjectrrBufferedReaderrrrrrr#rir+r+r+r,<module> s


						
h	)	Z
Back to Directory File Manager