403Webshell
Server IP : 172.67.201.108  /  Your IP : 216.73.216.55
Web Server : Apache/2.4.68 (Amazon Linux) OpenSSL/3.5.7
System : Linux ip-172-31-69-123.ec2.internal 6.1.177-224.371.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Jul 27 20:28:29 UTC 2026 x86_64
User : ec2-user ( 1000)
PHP Version : 8.4.24
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib64/python3.9/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib64/python3.9/__pycache__/tarfile.cpython-39.opt-2.pyc
a

��^j���@sdZdZdZddlmZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZzddlZWney�dZYn0zddlZWney�dZYn0eefZzeef7ZWney�Yn0gd�ZdZdZed	Zd
ZdZdZdZd
Z dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2e2Z3e!e"e#e$e'e(e)e%e&e*e+e,fZ4e!e"e)e,fZ5e*e+e,fZ6dZ7hd�Z8e9e9e9e:e:e:d �Z;ej<d!k�r�d"Z=ne�>�Z=d#d$�Z?d%d&�Z@d'd(�ZAd)e3fd*d+�ZBd,d-�ZCdedfd.d/�ZDd0d1�ZEGd2d3�d3eF�ZGGd4d5�d5eG�ZHGd6d7�d7eG�ZIGd8d9�d9eG�ZJGd:d;�d;eG�ZKGd<d=�d=eG�ZLGd>d?�d?eL�ZMGd@dA�dAeL�ZNGdBdC�dCeL�ZOGdDdE�dEeL�ZPGdFdG�dGeL�ZQGdHdI�dI�ZRGdJdK�dK�ZSGdLdM�dMeT�ZUGdNdO�dOeT�ZVGdPdQ�dQejW�ZXGdRdS�dSeG�ZYGdTdU�dUeY�ZZGdVdW�dWeY�Z[GdXdY�dYeY�Z\GdZd[�d[eY�Z]Gd\d]�d]eY�Z^Gd^d_�d_eY�Z_eYeeHfZ`dtdadb�Zadcdd�Zbdedf�Zcdgdh�Zdebeceddi�ZeeT�Zfe�gdj�ZhGdkdl�dleT�ZiGdmdn�dneT�Zjdodp�ZkejjZdqdr�Zlemdsk�r�el�dS)uz0.9.0u"Lars Gustäbel ([email protected])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�gname>r,r&r%r+)Zatime�ctimer(r)r*r'�nt�utf-8cCs8|durtd��|�||�}|d|�|t|�tS)Nzmetadata cannot contain None)�
ValueError�encode�len�NUL)�s�length�encoding�errors�r8�/usr/lib64/python3.9/tarfile.py�stn�sr:cCs*|�d�}|dkr|d|�}|�||�S)Nr���)�find�decode)r4r6r7�pr8r8r9�nts�s
r?cCs�|ddvrbd}tt|�d�D]}|dK}|||d7}q |ddkr�dt|�d|}n>z"t|dd�}t|��p|d	d�}Wnty�td
��Yn0|S)Nr)��r#�rA��ascii�strict�0�invalid header)�ranger2r?�int�stripr0�InvalidHeaderError)r4�n�ir8r8r9�nti�srNrBcCs�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�insertr0)rL�digits�formatr4rMr8r8r9�itn�s 2
rTcCs0dtt�d|��}dtt�d|��}||fS)NrCZ
148B8x356BZ
148b8x356b)�sum�struct�unpack_from)�bufZunsigned_chksumZ
signed_chksumr8r8r9�calc_chksums�s	rYc	Cs�|pd}|dkrdS|dur.t�|||�dSt||�\}}t|�D],}|�|�}t|�|krf|d��|�|�qD|dkr�|�|�}t|�|kr�|d��|�|�dS)Ni@r�unexpected end of data)�shutil�copyfileobj�divmodrH�readr2�write)	�src�dstr5�	exception�bufsize�blocks�	remainder�brXr8r8r9r\�s$


r\cCs8ttjdd�}|dur(|�|d��|�}t|dd�dS)Nr6�backslashreplace� )�end)�getattr�sys�stdoutr1r=�print)r4r6r8r8r9�_safe_printsrnc@seZdZdS)rN��__name__�
__module__�__qualname__r8r8r8r9rsrc@seZdZdS)r
Nror8r8r8r9r
sr
c@seZdZdS)rNror8r8r8r9rsrc@seZdZdS)rNror8r8r8r9rsrc@seZdZdS)r	Nror8r8r8r9r	sr	c@seZdZdS)rNror8r8r8r9rsrc@seZdZdS)�EmptyHeaderErrorNror8r8r8r9rs srsc@seZdZdS)�TruncatedHeaderErrorNror8r8r8r9rt#srtc@seZdZdS)�EOFHeaderErrorNror8r8r8r9ru&sruc@seZdZdS)rKNror8r8r8r9rK)srKc@seZdZdS)�SubsequentHeaderErrorNror8r8r8r9rv,srvc@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�hasattrr{r�fd)�self�name�moder8r8r9�__init__9s��

z_LowLevelFile.__init__cCst�|j�dS�N)r|�closer��r�r8r8r9r�Bsz_LowLevelFile.closecCst�|j|�Sr�)r|r^r��r�r'r8r8r9r^Esz_LowLevelFile.readcCst�|j|�dSr�)r|r_r��r�r4r8r8r9r_Hsz_LowLevelFile.writeN)rprqrrr�r�r^r_r8r8r8r9rw3s	rwc@sneZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
ddd�Zdd�Zdd�Z
dd�ZdS)�_Streamc	Cs�d|_|durt||�}d|_|dkr6t|�}|��}|p<d|_||_||_||_||_d|_	d|_
d|_�zF|dkr�zddl}Wnt
y�td��Yn0||_|�d�|_|d	kr�|��|j|_n|��n�|d
k�r6zddl}Wnt
�ytd��Yn0|d	k�r*d|_|��|_t|_n
|��|_nz|dk�r�zddl}Wnt
�yhtd
��Yn0|d	k�r�d|_|��|_|j|_n
|��|_n|dk�r�td|��Wn&|j�s�|j��d|_�Yn0dS)NTF�*��r�gzzzlib module is not availablery�bz2�bz2 module is not available�xz�lzma module is not available�tar�unknown compression type %r) �_extfileobjrw�_StreamProxy�getcomptyper�r��comptype�fileobjrcrX�pos�closed�zlib�ImportErrorr�crc32�crc�
_init_read_gz�errorrb�_init_write_gzr��dbuf�BZ2Decompressor�cmp�OSError�
BZ2Compressor�lzma�LZMADecompressor�	LZMAError�LZMACompressorr�)	r�r�r�r�r�rcr�r�r�r8r8r9r�Vsl












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��compressobj�DEFLATED�	MAX_WBITS�
DEF_MEM_LEVELr�rV�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�|_qdSr�)rXr2rcr�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|jd@��W|js�|j�
�n|js�|j�
�0dS)NTrzr�r�r�r�l��)r�r�r�rXr��flushr�r_rVr�r�r�r�r�r�r8r8r9r��s 
�z
_Stream.closecCs�|j�|jj�|_d|_|�d�dkr0td��|�d�dkrFtd��t|�d��}|�d�|d	@r�t|�d��d
t|�d��}|�	|�|d@r�|�d�}|r�|t
kr�q�q�|d@r�|�d�}|r�|t
kr�q�q�|d@r�|�d�dS)
Nr�r$s��not a gzip filer#�zunsupported compression method��rCrB�)r��
decompressobjr�r�r��
_Stream__readrr�ordr^r3)r��flagZxlenr4r8r8r9r��s*
 


z_Stream._init_read_gzcCs|jSr�)r�r�r8r8r9�tell�sz_Stream.tellrcCs`||jdkrRt||j|j�\}}t|�D]}|�|j�}|s,qFq,|�|�ntd��|jS)Nrz seeking backwards is not allowed)r�r]rcrHr^r	)r�r�rdrerM�datar8r8r9�seek�sz_Stream.seekcCs |�|�}|jt|�7_|Sr�)�_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
y�td��Yn0|�|�|t|�7}q&d�
|�}||d�|_|d|�S)Nr�r�zinvalid compressed data)r�r�r2r�rXr�r^rcr��
decompressrbr�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^rcr�r�r�r8r8r9Z__read.s


z_Stream.__readN)r)rprqrrr�r�r�r_r�r�r�r�r�r^r�r�r8r8r8r9r�KsF
	
r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
r�cCs||_|j�t�|_dSr�)r�r^�	BLOCKSIZErX)r�r�r8r8r9r�Dsz_StreamProxy.__init__cCs|jj|_|jSr�)r�r^rXr�r8r8r9r^Hs
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�Ls$z_StreamProxy.getcomptypecCs|j��dSr�)r�r�r�r8r8r9r�Vsz_StreamProxy.closeN)rprqrrr�r^r�r�r8r8r8r9r�?s
r�c@sfeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Ze	j
fdd�Zddd�Zdd�Z
dd�ZdS)�_FileInFileNcCs�||_||_||_d|_t|dd�|_d|_|dur>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'�positionrjr�r��	map_index�mapr�)r�r�r�r'Z	blockinfoZlastposZrealposr8r8r9r�cs(


z_FileInFile.__init__cCsdSr�r8r�r8r8r9r�|sz_FileInFile.flushcCsdS�NTr8r�r8r8r9�readablesz_FileInFile.readablecCsdS)NFr8r�r8r8r9�writable�sz_FileInFile.writablecCs
|j��Sr�)r��seekabler�r8r8r9r��sz_FileInFile.seekablecCs|jSr�)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_ENDr0)r�r��whencer8r8r9r��s


z_FileInFile.seekc	Cs
|dur|j|j}nt||j|j�}d}|dk�r|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)Nr�rr#rZ)r'r�r�r�r�r2r�r�r^rr3)	r�r'rXr��start�stopr�r5rfr8r8r9r^�s,

z_FileInFile.readcCs&|�t|��}||dt|��<t|�Sr�)r^r2)r�rfrXr8r8r9�readinto�sz_FileInFile.readintocCs
d|_dSr�)r�r�r8r8r9r��sz_FileInFile.close)N)N)rprqrrr�r�r�r�r�r�r�r�r�r^r�r�r8r8r8r9r�]s

r�cseZdZ�fdd�Z�ZS)�ExFileObjectcs&t|j|j|j|j�}t��|�dSr�)r�r��offset_datar'�sparse�superr�)r��tarfile�tarinfor���	__class__r8r9r��s
�zExFileObject.__init__�rprqrrr��
__classcell__r8r8r�r9r��sr�c@seZdZdS)�FilterErrorNror8r8r8r9r��sr�cseZdZ�fdd�Z�ZS)�AbsolutePathErrorcs ||_t��d|j�d��dS)Nzmember z has an absolute path�r�r�r�r��r�r�r�r8r9r��szAbsolutePathError.__init__r�r8r8r�r9r��sr�cseZdZ�fdd�Z�ZS)�OutsideDestinationErrorcs.||_||_t��|j�d|�d�d�dS)Nz would be extracted to �, � which is outside the destination�r��_pathr�r�r��r�r�r%r�r8r9r��s
�z OutsideDestinationError.__init__r�r8r8r�r9r��sr�cseZdZ�fdd�Z�ZS)�SpecialFileErrorcs||_t��|j�d��dS)Nz is a special filer�r�r�r8r9r��szSpecialFileError.__init__r�r8r8r�r9r��sr�cseZdZ�fdd�Z�ZS)�AbsoluteLinkErrorcs||_t��|j�d��dS)Nz is a link to an absolute pathr�r�r�r8r9r��szAbsoluteLinkError.__init__r�r8r8r�r9r��sr�cseZdZ�fdd�Z�ZS)�LinkOutsideDestinationErrorcs.||_||_t��|j�d|�d�d�dS)Nz would link to r�r�r�r�r�r8r9r��s
�z$LinkOutsideDestinationError.__init__r�r8r8r�r9r��sr�cseZdZ�fdd�Z�ZS)�LinkFallbackErrorcs2||_||_t��d|j�d�d|�d��dS)Nzlink z would be extracted as a zcopy of z, which was rejectedr�r�r�r8r9r��s

�zLinkFallbackError.__init__r�r8r8r�r9r�srTc	CsBi}|j}tjj|tjjd�}|�dtjf�rH|j�dtj�}|d<tj�|�r\t	|��tjjtj�
||�tjjd�}tj�||g�|kr�t||��|j
}|du�r|d@}|r�|��s�|��r�|d@s�|dM}|dO}n|��s�|��r�d}nt|��||j
k�r||d<|�r>|jdu�r*d|d	<|jdu�r>d|d
<|jdu�rRd|d<|jdu�rfd|d<|���sz|���r>tj�|j��r�t|��||k�r�t||��tj�|j�}||jk�r�||d
<|���r�tj�|�dtj��}tj�
|||�}ntj�
||�}tjj|tjjd�}tj�||g�|k�r>t||��|S)N)rE�/r�i��@i�����r�r)r*r+r,�linkname)r�r|r%�realpath�
ALLOW_MISSINGr��sep�lstrip�isabsr�r��
commonpathr�r��isreg�islnk�isdir�issymr�r)r*r+r,rr��normpath�dirname�rstripr�)	�member�	dest_pathZfor_data�	new_attrsr�Ztarget_pathr�Z
normalizedZlink_dirr8r8r9�_get_filtered_attrs�sh�





�
rcCs|Sr�r8)rrr8r8r9�fully_trusted_filterHsrcCs,t||d�}|r(|jfi|�ddi��S|S)NF�deep�rr��rrrr8r8r9�
tar_filterKsrcCs,t||d�}|r(|jfi|�ddi��S|S)NTrFrrr8r8r9�data_filterQsr)Z
fully_trustedr�r�s([0-9]{1,20}) c@s�eZdZeddddddddd	d
ddd
dddddddd�Zdmdd�Zedd��Zejdd��Zedd��Z	e	jdd��Z	dd�Z
eeeeeeeeded �
d!d"�Zd#d$�Z
eed%fd&d'�Zd(d)�Zd*d+�Zd,d-�Zed.d/��Zd0d1�Zed2d3��Zed4d5��Zed6d7��Zed8d9��Zed:d;��Zedd<�d=d>��Zed?d@��Zedd<�dAdB��ZdCdD�Z dEdF�Z!dGdH�Z"dIdJ�Z#dKdL�Z$dMdN�Z%dOdP�Z&dQdR�Z'dSdT�Z(dUdV�Z)dWdX�Z*dYdZ�Z+d[d\�Z,d]d^�Z-d_d`�Z.dadb�Z/dcdd�Z0dedf�Z1dgdh�Z2didj�Z3dkdl�Z4dS)nrzName 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�typerr+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�REGTYPErrr+r,rrr�r�r�r �r�r�r8r8r9r��s"zTarInfo.__init__cCs|jSr��r�r�r8r8r9r%�szTarInfo.pathcCs
||_dSr�r%r$r8r8r9r%�scCs|jSr��rr�r8r8r9r&�szTarInfo.linkpathcCs
||_dSr�r&)r�rr8r8r9r&�scCsd|jj|jt|�fS)Nz<%s %r at %#x>)r�rpr��idr�r8r8r9�__repr__�szTarInfo.__repr__T)
r�r(r�rr)r*r+r,r�_KEEPc
Cs�|	rt�|�}n
t�|�}||
ur(||_||
ur6||_||
urD||_||
urR||_||
ur`||_||
urn||_||
ur|||_||
ur�||_	|Sr�)
�copy�deepcopyr�r(r�rr)r*r+r,)r�r�r(r�rr)r*r+r,rr)�resultr8r8r9r��s(
zTarInfo.replacecCs�|jdurd}n
|jd@}|j||j|j|j|j|j|j|j|j	|j
|j|jd�
}|dt
kr||d�d�s||dd7<|S)N�)
r�r�r)r*r'r(rrrr+r,rrrr�r)r�r�r)r*r'r(rrrr+r,rr�DIRTYPEr�)r�r��infor8r8r9�get_info�s(

�zTarInfo.get_info�surrogateescapecCsz|��}|��D]\}}|durtd|��q|tkrD|�|||�S|tkrZ|�|||�S|tkrn|�||�Std��dS)Nz%s may not be Nonezinvalid format)	r0�itemsr0r
�create_ustar_headerr�create_gnu_headerr�create_pax_header)r�rSr6r7r/r��valuer8r8r9�tobuf�sz
TarInfo.tobufcCsnt|d<t|d�||��tkr(td��t|d�||��tkr^|�|d||�\|d<|d<|�|t||�S)N�magicrzlinkname is too longr��prefix)	�POSIX_MAGICr2r1�LENGTH_LINKr0�LENGTH_NAME�_posix_split_name�_create_headerr
)r�r/r6r7r8r8r9r3szTarInfo.create_ustar_headercCs�t|d<d}t|d�||��tkr<||�|dt||�7}t|d�||��tkrl||�|dt||�7}||�|t	||�S)Nr8r�rr�)
�	GNU_MAGICr2r1r;�_create_gnu_long_header�GNUTYPE_LONGLINKr<�GNUTYPE_LONGNAMEr>r)r�r/r6r7rXr8r8r9r4
szTarInfo.create_gnu_headerc
	CsLt|d<|j��}ddtfddtfddfD]h\}}}||vr>q*z||�dd	�Wn"tyt||||<Yq*Yn0t||�|kr*||||<q*d
D]�\}}d}||}	t|	t	�}
|
r�t
|	�n|	}d|kr�d
|dks�nd||<d}n|
�r|||<d}|r�||vr�t|	�||<q�|�r4|�|t
|�}nd}||�|tdd�S)Nr8r�r%rr&)r+r+� )r,r,rCrDrE))r)rB)r*rB)r'�)r(rDFrrBr#Tr�r�)r:r r*r<r;r1�UnicodeEncodeErrorr2�
isinstance�float�round�str�_create_pax_generic_header�XHDTYPEr>r
)
r�r/r6r r�Zhnamer5rRZ	needs_pax�valZval_is_floatZval_intrXr8r8r9r5s>
�

zTarInfo.create_pax_headercCs|�|td�S)Nr/)rJ�XGLTYPE)�clsr r8r8r9�create_pax_global_headerUsz TarInfo.create_pax_global_headercCs~|�d�}tdt|��D]T}d�|d|��}d�||d��}t|�||��tkrt|�||��tkrqvqtd��||fS)Nrr#zname is too long)�splitrHr2r�r1�
LENGTH_PREFIXr<r0)r�r�r6r7�
componentsrMr9r8r8r9r=[s
�zTarInfo._posix_split_namecCs�|�d�ttfv}|r@t|�dd�d|�}t|�dd�d|�}ntdd||�}tdd||�}|�dt�}|durxtd��t|�dd�d	||�t|�d
d�d@d|�t|�dd�d|�t|�d
d�d|�t|�dd�d|�t|�dd�d|�d|t|�dd�d	||�|�dt�t|�dd�d||�t|�dd�d||�||t|�dd�d||�g}t�	dt
d�|��}	t|	t
d��d}
|	dd�t
d|
d�|	dd�}	|	S)NrrrrBrr�zTarInfo.type must not be Noner�rr�r-r)r*r'rDr(s        rr8r+rCr,r9rz%dsr�i����z%06orDi����)�get�CHRTYPE�BLKTYPErTr:r#r0r:rVr�r�r�rYrO)r/rSr6r7Zhas_device_fieldsrrZfiletype�partsrXrr8r8r9r>ks:
�&zTarInfo._create_headercCs.tt|�t�\}}|dkr*|t|t7}|S)Nr)r]r2r�r3)�payloadrdrer8r8r9�_create_payload�szTarInfo._create_payloadcCsR|�||�t}i}d|d<||d<t|�|d<t|d<|�|t||�|�|�S)Nz
././@LongLinkr�rr'r8)r1r3r2r?r>r
rX)rNr�rr6r7r/r8r8r9r@�s�zTarInfo._create_gnu_long_headerc	Cs0d}|��D]6\}}z|�dd�Wqty@d}YqDYq0qd}|rT|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/rETr�s21 hdrcharset=BINARY
r1r�rrD� �=�
z././@PaxHeaderr�rr'r8r�)
r2r1rEr2rIrOr:r>r
rX)rNr rr6�binary�keywordr6�records�lrLr>r/r8r8r9rJ�s<

(�z"TarInfo._create_pax_generic_headercCs|�|||�Sr�)�_frombuf)rNrXr6r7r8r8r9�frombuf�szTarInfo.frombuf��dircheckc	Cszt|�dkrtd��t|�tkr(td��|�t�tkr>td��t|dd��}|t|�vrbt	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�||�}|�r�|jtk�r�|j�d��r�t|_|jtk�r<d}g}	td�D]j}
z0t|||d��}t||d|d��}Wnt�y�Y�qYn0|	�||f�|d7}�q�t|d�}
t|dd��}|	|
|f|_ |�!��rT|j�"d�|_|�rv|jt#v�rv|d|j|_|S)Nrzempty headerztruncated headerzend of file header��zbad checksumr�l�t�|��ii	i)iIiQiYi�ri�r�rD�i�i�i�)$r2rsr�rt�countr3rurNrYrKr?r�r�r)r*r'r(rrrr+r,rr�AREGTYPEr�r.�GNUTYPE_SPARSErHr0r��boolr!r
r�	GNU_TYPES)rNrXr6r7rcr�objr9r��structsrMr��numbytes�
isextended�origsizer8r8r9r`�sZ	 
zTarInfo._frombufcCs
|�|�Sr�)�_fromtarfile)rNr�r8r8r9�fromtarfile0szTarInfo.fromtarfilecCs<|j�t�}|j||j|j|d�}|j��t|_|�|�S)Nrb)	r�r^r�r`r6r7r�r��_proc_member)rNr�rcrXrqr8r8r9rv7szTarInfo._fromtarfilecCsT|jttfvr|�|�S|jtkr,|�|�S|jtttfvrF|�	|�S|�
|�SdSr�)rrBrA�
_proc_gnulongrn�_proc_sparserKrM�SOLARIS_XHDTYPE�	_proc_pax�
_proc_builtin)r�r�r8r8r9rxLs



zTarInfo._proc_membercCsR|j��|_|j}|��s$|jtvr4||�|j�7}||_|�	|j
|j|j�|Sr�)
r�r�r�rr�SUPPORTED_TYPES�_blockr'r��_apply_pax_infor r6r7)r�r�r�r8r8r9r}YszTarInfo._proc_builtincCs�|j�|�|j��}z|j|dd�}Wnty@td��Yn0|j|_|jt	krht
||j|j�|_
n|jtkr�t
||j|j�|_|S)NFrb� missing or bad subsequent header)r�r^rr'rvrrvr�rrBr?r6r7r�rAr)r�r�rX�nextr8r8r9ryjs

zTarInfo._proc_gnulongc
	Cs�|j\}}}|`|r�|j�t�}d}td�D]l}z0t|||d��}t||d|d��}	WntyxYq�Yn0|r�|	r�|�||	f�|d7}q,t|d�}q||_	|j�
�|_|j|�|j
�|_||_
|S)Nr�rDrki�)r!r�r^r�rHrNr0r�ror�r�r�rr'r�)
r�r�rrrtrurXr�rMr�rsr8r8r9rz�s(
zTarInfo._proc_sparsecCs�|j�|�|j��}|jtkr&|j}n
|j��}d}d}g}t|�|k�rh||dk�rht	�
||�}sptd��zt|�
d��}Wnty�td��Yn0|dkr�td��||t|�kr�td��|�d�|d}	||�d�d|	�}
|
�d�\}}}
|�r|dk�s||	dk�r$td��|�|||
f�|dk�r^|du�r^|
dk�rZ|j}nd	}||7}q<|du�rvd	}|D]X\}}}
|�|d	d	|j�}|tv�r�|�|
||j|j�}n|�|
d	d	|j�}|||<�qzz|j|d
d�}Wnt�ytd��Yn0d
|v�r|�||�nFd|v�r4|�||�n.|�d�dk�rb|�d�dk�rb|�|||�|jttfv�r�|� ||j|j�|j!|_!d|v�r�|j"}|�#��s�|jt$v�r�||�|j�7}||_!|S)NrrGr#�rZr�s
hdrcharsetsBINARYr/Frbr��GNU.sparse.map�GNU.sparse.sizezGNU.sparse.major�1zGNU.sparse.minorrFr')%r�r^rr'rrMr r*r2�_header_length_prefix_re�matchrKrI�groupr0r�ri�	partitionr�r6�_decode_pax_fieldr7�PAX_NAME_FIELDSrvrrv�_proc_gnusparse_01�_proc_gnusparse_00rS�_proc_gnusparse_10rKr{r�r�r�rr~)r�r�rXr r�r6�raw_headersr�r5Zheader_value_end_offsetZkeyword_and_valueZraw_keywordZequalsZ	raw_valuer]r6r�r�r8r8r9r|�s|





�
�
�

 
zTarInfo._proc_paxc	Cs�g}g}|D]�\}}}|dkrRz|�t|����Wq�tyNtd��Yq�0q|dkrz|�t|����Wqty�td��Yq0qtt||��|_dS)NsGNU.sparse.offsetrGsGNU.sparse.numbytes)r�rIr=r0rK�list�zipr�)r�r�r�Zoffsetsrs�_r]r6r8r8r9r�szTarInfo._proc_gnusparse_00cCs@dd�|d�d�D�}tt|ddd�|ddd���|_dS)NcSsg|]}t|��qSr8)rI)�.0�xr8r8r9�
<listcomp>,r�z.TarInfo._proc_gnusparse_01.<locals>.<listcomp>r��,r$r#)rPr�r�r�)r�r�r r�r8r8r9r�)szTarInfo._proc_gnusparse_01cCs�d}g}|j�t�}|�dd�\}}t|�}t|�|dkrtd|vrT||j�t�7}|�dd�\}}|�t|��q,|j��|_t	t
|ddd�|ddd���|_dS)Nr[r#r$)r�r^r�rPrIr2r�r�r�r�r�r�)r�r�r r��fieldsr�rX�numberr8r8r9r�/szTarInfo._proc_gnusparse_10c	Cs�|��D]�\}}|dkr&t|d|�q|dkr@t|dt|��q|dkrZt|dt|��q|tvr|tvr�zt||�}Wnty�d}Yn0|dkr�|�d�}t|||�q|��|_dS)NzGNU.sparse.namer%r�r'zGNU.sparse.realsizerr)	r2�setattrrI�
PAX_FIELDS�PAX_NUMBER_FIELDSr0rr*r )r�r r6r7r]r6r8r8r9r�?s"

zTarInfo._apply_pax_infocCs2z|�|d�WSty,|�||�YS0dS)NrE)r=�UnicodeDecodeError)r�r6r6Zfallback_encodingZfallback_errorsr8r8r9r�VszTarInfo._decode_pax_fieldcCs2|dkrtd��t|t�\}}|r*|d7}|tS)Nrzinvalid offsetr#)rKr]r�)r�rlrdrer8r8r9r^szTarInfo._blockcCs
|jtvSr�)r�
REGULAR_TYPESr�r8r8r9rjsz
TarInfo.isregcCs|��Sr�)rr�r8r8r9�isfilenszTarInfo.isfilecCs
|jtkSr�)rr.r�r8r8r9r
rsz
TarInfo.isdircCs
|jtkSr�)r�SYMTYPEr�r8r8r9rvsz
TarInfo.issymcCs
|jtkSr�)r�LNKTYPEr�r8r8r9rzsz
TarInfo.islnkcCs
|jtkSr�)rrTr�r8r8r9�ischr~sz
TarInfo.ischrcCs
|jtkSr�)rrUr�r8r8r9�isblk�sz
TarInfo.isblkcCs
|jtkSr�)r�FIFOTYPEr�r8r8r9�isfifo�szTarInfo.isfifocCs
|jduSr�)r�r�r8r8r9�issparse�szTarInfo.issparsecCs|jtttfvSr�)rrTrUr�r�r8r8r9�isdev�sz
TarInfo.isdev)r�)5rprqrr�dict�	__slots__r��propertyr%�setterr&r(r)r�r0rrr7r3r4r5�classmethodrOr=�staticmethodr>rXr@rJrar`rwrvrxr}ryrzr|r�r�r�r�r�rrr�r
rrr�r�r�r�r�r8r8r8r9rgs��




�
:

)
	

2
C

yrc
@s�eZdZdZdZdZdZeZe	Z
dZeZ
eZdZdjdd�Zedddefd	d
��Zedkdd��Zedldd��Zedmdd��Zedndd��Zddddd�Zdd�Zdd�Zdd�Zdd �Zdod!d"�Zdpdd$�d%d&�Zdqdd'�d(d)�Z drd*d+�Z!d,d-�Z"dsddd/�d0d1�Z#d2d3�Z$dtddd/�d5d6�Z%d7d8�Z&dud9d:�Z'd;d<�Z(d=d>�Z)d?d@�Z*dvdddA�dBdC�Z+dDdE�Z,dFdG�Z-dHdI�Z.dJdK�Z/dLdM�Z0dNdO�Z1dPdQ�Z2dRdS�Z3dTdU�Z4dVdW�Z5dXdY�Z6dwdZd[�Z7d\d]�Z8dxd^d_�Z9d`da�Z:dbdc�Z;ddde�Z<dfdg�Z=dhdi�Z>dS)yrrFr#Nryr1c
Cs�ddddd�}||vrtd��||_|||_|sh|jdkrTtj�|�sTd|_d|_t||j�}d	|_n@|dur�t|d
�r�t	|j
ttf�r�|j
}t|d�r�|j|_d|_|r�tj�
|�nd|_
||_|dur�||_|dur�||_|dur�||_|dur�||_|du�r||_|	|_|
du�r0|jtk�r0|
|_ni|_|du�rF||_|du�rV||_|
|_d	|_g|_d	|_|j��|_i|_z�|jd
k�r�d|_ |�!�|_ |jdk�r2|j�"|j�z|j�#|�}|j�$|�WnXt%�y�|j�"|j�Y�q2Yn2t&�y,}zt't|���WYd}~n
d}~00�q�|jdv�r|d|_|j�r||j�(|j�)��}|j�*|�|jt+|�7_Wn&|j�s�|j�,�d|_�Yn0dS)N�rbzr+b�wb�xb�ry�arzr��!mode must be 'r', 'a', 'w' or 'x'r�rzFr�r�Try�r�rzr�)-r0r��_moder|r%�exists�	bltn_openr�r�rFr�rIrO�abspathr�rSr��dereference�ignore_zerosr6r7rr �debug�
errorlevel�copybufsizer��members�_loadedr�r��inodes�firstmemberr�r�rwr�rurrrOr*r_r2r�)r�r�r�r�rSr�r�r�r6r7r r�r�r�Zmodes�erXr8r8r9r��s�
�





&
zTarFile.__init__c

s�|s|std��|dvr��fdd�}t�j|d�D]l}t��j|�}|durV|��}	z||d|fi|��WSttfy�|dur�|�|	�Yq2Yq20q2td���nd|v�r|�dd	�\}
}|
p�d}
|p�d
}|�jvr�t��j|�}ntd|��|||
|fi|��Sd|v�r�|�dd	�\}
}|
�p4d}
|�p>d
}|
d
v�rRtd��t	||
|||�}z�||
|fi|��}Wn|�
��Yn0d|_|S|dv�r��j|||fi|��Std��dS)Nznothing to open)ry�r:*cs�j|dkS)N�taropen)�	OPEN_METH)r��rNr8r9�not_compressedGsz$TarFile.open.<locals>.not_compressed)�keyryz%file could not be opened successfully�:r#r�r��|rxzmode must be 'r' or 'w'Fr�zundiscernible mode)
r0�sortedr�rjr�rrr�rPr�r�r�r�)
rNr�r�r�rc�kwargsr�r��funcZ	saved_pos�filemode�streamr�r8r�r9rsP%







zTarFile.opencKs$|dvrtd��||||fi|��S)Nr�r�)r0)rNr�r�r�r�r8r8r9r�xszTarFile.taropenr�cKs�|dvrtd��zddlm}Wnty:td��Yn0z|||d||�}Wn,ty~|durx|dkrxtd���Yn0z|j|||fi|��}Wn@ty�|��|dkr�td���Yn|���Yn0d	|_	|S)
N�ryrzr��mode must be 'r', 'w' or 'x'r)�GzipFilezgzip module is not availablerfryr�F)
r0�gzipr�r�rr�rr�r�r�)rNr�r�r��
compresslevelr�r�r�r8r8r9�gzopen�s0zTarFile.gzopenc	Ks�|dvrtd��zddlm}Wnty:td��Yn0||pD|||d�}z|j|||fi|��}WnDttfy�|��|dkr�t	d���Yn|���Yn0d	|_
|S)
Nr�r�r)�BZ2Filer�)r�ryznot a bzip2 fileF)r0r�r�r�rr�r��EOFErrorr�rr�)rNr�r�r�r�r�r�r�r8r8r9�bz2open�s&zTarFile.bz2openc		Ks�|dvrtd��zddlm}m}Wnty>td��Yn0||pH|||d�}z|j|||fi|��}WnD|tfy�|��|dkr�t	d���Yn|���Yn0d	|_
|S)
Nr�r�r)�LZMAFiler�r�)�presetryznot an lzma fileF)r0r�r�r�r�rr�r�r�rr�)	rNr�r�r�r�r�r�r�r�r8r8r9�xzopen�s&zTarFile.xzopenr�r�r�r�)r�r�r�r�cCs�|jr
dSd|_zp|jdvrn|j�ttd�|jtd7_t|jt�\}}|dkrn|j�tt|�W|j	s�|j�
�n|j	s�|j�
�0dS)NTr�r$r)r�r�r�r_r3r�r�r]�
RECORDSIZEr�r�)r�rdrer8r8r9r��s
�z
TarFile.closecCs(|�|�d��}|dur$td|��|S)Nrzfilename %r not found)�
_getmemberr�KeyError)r�r�r�r8r8r9�	getmember�szTarFile.getmembercCs|��|js|��|jSr�)�_checkr��_loadr�r�r8r8r9�
getmembersszTarFile.getmemberscCsdd�|��D�S)NcSsg|]
}|j�qSr8r%)r�r�r8r8r9r�r�z$TarFile.getnames.<locals>.<listcomp>)r�r�r8r8r9�getnamesszTarFile.getnamescCsZ|�d�|dur|j}|dur$|}tj�|�\}}|�tjd�}|�d�}|��}||_	|dur�|j
stt�|�}q�t�|�}nt�
|���}d}|j}t�|�r�|j|jf}	|j
s�|jdkr�|	|jvr�||j|	kr�t}
|j|	}nt}
|	dr�||j|	<nht�|��rt}
nVt�|��r"t}
nDt�|��r>t}
t�|�}n(t�|��rPt}
nt� |��rbt!}
ndS||_||_"|j#|_$|j%|_&|
tk�r�|j'|_(nd|_(|j)|_*|
|_+||_,t-�r�zt-�.|j$�d|_/Wnt0�y�Yn0t1�rzt1�2|j&�d|_3Wnt0�yYn0|
tt!fv�rVt4td��rVt4td��rVt�5|j6�|_7t�8|j6�|_9|S)N�awxrr�r#r�major�minor):r�r�r|r%�
splitdriver�rrr�r�r��lstat�stat�fstat�fileno�st_mode�S_ISREG�st_ino�st_dev�st_nlinkr�r�r#�S_ISDIRr.�S_ISFIFOr��S_ISLNKr��readlink�S_ISCHRrT�S_ISBLKrUr��st_uidr)�st_gidr*�st_sizer'�st_mtimer(rr�pwd�getpwuidr+r��grp�getgrgidr,r�r��st_rdevrr�r)r�r��arcnamer��drvr�ZstatresrZstmd�inoderr8r8r9�
gettarinfos�	


��

zTarFile.gettarinfoT)r�cCs*|��|dur|}|D�]
}|r�|jdur6td�ntt�|j��td|jpT|j|jp^|jf�|�	�sv|�
�r�tdd|j|jf�ntd|j
�|jdur�td�ntdt�|j�dd��t|j|��r�d	nd
�|�r|���rtd|j�|���rtd|j�t�qdS)
Nz
??????????z%s/%sz%10sz%d,%dz%10dz????-??-?? ??:??:??z%d-%02d-%02d %02d:%02d:%02dr�rr�z-> zlink to )r�r�rnr�r�r+r)r,r*r�r�rrr'r(r��	localtimer�r
rrrrm)r��verboser�r�r8r8r9r�ws8



��

�

zTarFile.list��filtercCsL|�d�|dur|}|jdurFtj�|�|jkrF|�dd|�dS|�d|�|�||�}|durz|�dd|�dS|dur�||�}|dur�|�dd|�dS|��r�t|d��}|�	||�Wd�n1s�0Ynb|�
��r>|�	|�|�rHtt�|��D],}|j
tj�||�tj�||�||d��qn
|�	|�dS)	Nr�r$ztarfile: Skipped %rr#ztarfile: Unsupported type %r�tarfile: Excluded %rr�r)r�r�r|r%r��_dbgrrr��addfiler
r��listdir�addr�)r�r�r�	recursiverr��fr8r8r9r
�s6

,

�zTarFile.addcCs�|�d�t�|�}|�|j|j|j�}|j�|�|jt	|�7_|j
}|dur�t||j|j|d�t
|jt�\}}|dkr�|j�tt|�|d7}|j|t7_|j�|�dS)Nr�)rcrr#)r�r*r7rSr6r7r�r_r�r2r�r\r'r]r�r3r�r�)r�r�r�rXrcrdrer8r8r9r�s

zTarFile.addfilecCsp|dur0|j}|durtSt|t�r,td��|St|�r<|Sz
t|WStyjtd|�d��d�Yn0dS)NzrString names are not supported for TarFile.extraction_filter. Use a function such as tarfile.data_filter directly.zfilter z
 not found)	�extraction_filterrrFrI�	TypeError�callable�_NAMED_FILTERSr�r0)r�rr8r8r9�_get_filter_function�s
�
zTarFile._get_filter_function�.)�
numeric_ownerrcCs�g}|�|�}|dur|}|D]L}|�|||�\}}	|dur>q|��rP|�|	�|j|||��||d�q|jdd�dd�|D�]0}	z�z||	|�}WnBty�}
z*|�|	t|
��WYd}
~
Wq�WYd}
~
n
d}
~
00|dur�|�|	d�Wq�t	j
�||j�}zt	�
|�}Wn&t�y8|�|d�YWq�Yn0t�|j��sX|�|d�Wq�|j|||d	�|�||�|�||�Wq�t�y�}
z|�|
�WYd}
~
q�d}
~
00q�dS)
N)�	set_attrsr�filter_functioncSs|jSr�r%)r�r8r8r9�<lambda>	r�z$TarFile.extractall.<locals>.<lambda>T)r��reversezexcluded by filter�missingznot a directory)r)r�_get_extract_tarinfor
r��_extract_one�sort�_FILTER_ERRORS�_log_no_directory_fixup�reprr|r%r�r�r��FileNotFoundErrorr�r�r��chown�utime�chmodr
�_handle_nonfatal_error)r�r%r�rrZdirectoriesrrr��
unfiltered�exc�dirpathr�r�r8r8r9�
extractall�sV
�
�
$�zTarFile.extractallcCs|�dd|j|f�dS)Nr$z(tarfile: Not fixing up directory %r (%s))r
r�)r�r�reasonr8r8r9r @	s�zTarFile._log_no_directory_fixupr�c	Cs<|�|�}|�|||�\}}|dur8|j|||||d�dS)N)r)rrr)	r�rr%rrrrr�r'r8r8r9�extractD	s
��zTarFile.extractc
Cs�t|t�r|�|�}n|}d}z|||�}Wn^ttfy^}z|�|�WYd}~n6d}~0ty�}z|�|�WYd}~n
d}~00|dur�|�dd|j	�dS|�
�r�t�|�}tj
�||j�|_||fS)Nr$r	)NN)rFrIr�r�r��_handle_fatal_errorr
r&r
r�rr*r|r%r�rr")r�rrr%r'�filteredr�r8r8r9rY	s"
 
zTarFile._get_extract_tarinfoc
Cs�|�d�z&|j|tj�||j�||||d�WnZty^}z|�|�WYd}~n6d}~0ty�}z|�	|�WYd}~n
d}~00dS)Nry)rrr�extraction_root)
r��_extract_memberr|r%r�r�r�r-r
r&)r�r�r%rrrr�r8r8r9rw	s
�
zTarFile._extract_onecCs"|jdkr�n|�dd|�dS)Nr#�tarfile: %s)r�r
�r�r�r8r8r9r&�	s
zTarFile._handle_nonfatal_errorcCsn|jdkr�n\t|t�rP|jdur6|�dd|j�qj|�dd|j|jf�n|�ddt|�j|f�dS)Nrr#r1ztarfile: %s %rztarfile: %s %s)r�rFr��filenamer
�strerrorrrpr2r8r8r9r-�	s


zTarFile._handle_fatal_errorcCs�|�d�t|t�r |�|�}n|}|��s6|jtvrB|�||�S|��sR|�	�rzt|j
t�rhtd��q~|�
|�|��SndSdS)Nryz'cannot extract (sym)link as file object)r�rFrIr�rrr~�
fileobjectrrr�r�r	�extractfile�_find_link_target)r�rr�r8r8r9r6�	s


zTarFile.extractfile�rr/cCsZ|�d�}|�dtj�}tj�|�}|r>tj�|�s>t�|�|��sN|�	�rh|�
dd|j|jf�n|�
d|j�|�
�r�|�||�n�|��r�|�||�n~|��r�|�||�nh|��s�|��r�|�||�nJ|��s�|�	�r�|j||||d�n&|jtv�r|�||�n|�||�|�rV|�|||�|�	��sV|�||�|�||�dS)Nrr#z%s -> %sr8)rr�r|rr%rr��makedirsrrr
r�rr�makefiler
�makedirr��makefifor�r��makedev�makelink_with_filterrr~�makeunknownr#r%r$)r�r��
targetpathrrrr/Z	upperdirsr8r8r9r0�	s<

�
zTarFile._extract_membercCs>z&|jdurt�|�nt�|d�Wnty8Yn0dS)Ni�)r�r|�mkdir�FileExistsError�r�r�r@r8r8r9r;�	s
zTarFile.makedircCs�|j}|�|j�|j}t|d��l}|jdurn|jD]"\}}|�|�t|||t|�q4|�|j�|�	�nt|||jt|�Wd�n1s�0YdS)Nr�)
r�r�r�r�r�r�r\rr'�truncate)r�r�r@�sourcerc�targetr�r'r8r8r9r:
s


zTarFile.makefilecCs"|�||�|�dd|j�dS)Nr#z9tarfile: Unknown file type %r, extracted as regular file.)r:r
rrCr8r8r9r?
s�zTarFile.makeunknowncCs"ttd�rt�|�ntd��dS)N�mkfifozfifo not supported by system)r�r|rGr
rCr8r8r9r<
s
zTarFile.makefifocCsjttd�rttd�std��|j}|dur.d}|��rB|tjO}n
|tjO}t�||t�	|j
|j��dS)N�mknodr=z'special devices not supported by systemr)r�r|r
r�r�r��S_IFBLK�S_IFCHRrHr=rr)r�r�r@r�r8r8r9r=$
s
�zTarFile.makedevcCs|�||dd�Sr�)r>rCr8r8r9�makelink6
szTarFile.makelinkc	
Cs>d}zX|��r8tj�|�r$t�|�t�|j|�WdStj�|j�rZt�	|j|�WdSWnt
yrd}Yn0z|�|�}Wn"ty�|r�t
d��n�Yn0|dur�|}nj|dur�t
d��z$||j|jdd�|�|||�}Wn4t�y}zt||j�|�WYd}~n
d}~00|du�r:|j||||d�dS)NFTz%unable to resolve link inside archivez[makelink_with_filter: if filter_function is not None, extraction_root must also not be None)r�rr8)rr|r%�lexists�unlink�symlinkrr�r"�link�symlink_exceptionr7r�r
r�r�rrr0)	r�r�r@rr/Zkeyerror_to_extracterrorr'r.�causer8r8r9r>9
sN	


���$
�zTarFile.makelink_with_filtercCs�ttd�r�t��dkr�|j}|j}|s�ztrB|jrBt�|j�d}WntyVYn0zt	rt|j
rtt	�|j
�d}Wnty�Yn0|dur�d}|dur�d}z4|��r�ttd�r�t�
|||�nt�|||�Wnty�td��Yn0dS)N�geteuidrr$r;�lchownzcould not change owner)r�r|rRr*r)r�r,�getgrnamr�r�r+�getpwnamrrSr#r�r
)r�r�r@r�g�ur8r8r9r#n
s0

z
TarFile.chowncCs@|jdurdSzt�||j�Wnty:td��Yn0dS)Nzcould not change mode)r�r|r%r�r
rCr8r8r9r%�
s
z
TarFile.chmodcCsT|j}|durdSttd�s dSzt�|||f�WntyNtd��Yn0dS)Nr$z"could not change modification time)r(r�r|r$r�r
)r�r�r@r(r8r8r9r$�
s
z
TarFile.utimecCsl|�d�|jdur$|j}d|_|S|j|j��krZ|j�|jd�|j�d�sZtd��d}z|j�	|�}W�qJt
y�}zD|jr�|�dd|j|f�|jt
7_WYd}~q^WYd}~�qJd}~0t�yD}z`|j�r|�dd|j|f�|jt
7_WYd}~q^n|jdk�r.tt|���WYd}~�qJd}~0t�yj|jdk�rftd��Yn�t�y�}z$|jdk�r�tt|���WYd}~n�d}~0t�y�}ztt|���WYd}~nvd}~0t�yB}zTz.ddl}t||j��rtd|����n|�Wnt�y,|�Yn0WYd}~n
d}~00�qJq^|du�rb|j�|�nd	|_|S)
NZrar#rZr$z0x%X: %srz
empty filezzlib error: T)r�r�r�r�r�r�r^rr�rwrur�r
r�rKrIrsrtrv�	Exceptionr�rFr�r�r�r�r�)r��mr�r�r�r8r8r9r��
sZ

""   
zTarFile.nextc	Cs�|��}d}|durFz|�|�}Wnty8d}Yn0|d|�}|rVtj�|�}t|�D]D}|rx|j|jkr^d}q^|r�tj�|j�}n|j}||kr^|Sq^|r�t|��dS)NFT)	r��indexr0r|r%r�reversedr�r�)	r�r�r��	normalizer�ZskippingrZr�member_namer8r8r9r��
s,

zTarFile._getmembercCs|��}|durqqd|_dSr�)r�r�r�r8r8r9r�sz
TarFile._loadcCs:|jrtd|jj��|dur6|j|vr6td|j��dS)Nz%s is closedzbad operation for mode %r)r�r�r�rpr�)r�r�r8r8r9r�szTarFile._checkcCs`|��r.d�tdtj�|j�|jf��}d}n
|j}|}|j||dd�}|dur\t	d|��|S)NrT)r�r\zlinkname %r not found)
rr�rr|r%rr�rr�r�)r�r�r�limitrr8r8r9r7!s zTarFile._find_link_targetccs�|jr|jEdHdSd}|jdur:|��}|d7}|V|t|j�krT|j|}n"|jsr|��}|svd|_dSndS|d7}|Vq:dS)Nrr#T)r�r�r�r�r2)r�rZr�r8r8r9�__iter__4s$
zTarFile.__iter__cCs||jkrt|tjd�dS)N��file)r�rmrk�stderr)r��level�msgr8r8r9r
Ss
zTarFile._dbgcCs|��|Sr�)r�r�r8r8r9�	__enter__YszTarFile.__enter__cCs,|dur|��n|js"|j��d|_dSr�)r�r�r�r�)r�rr6�	tracebackr8r8r9�__exit__]s


zTarFile.__exit__)
NryNNNNNNr1NNNN)ryN)ryNr�)ryNr�)ryNN)NNN)T)NT)N)rN)r�T)N)TF)NF)N)?rprqrrr�r�r�r�rrSrr6r7rr�r�r5rr�r�r�rr�r�r�r�r�r�r�r�r�rr�r
rrr*r r,rrr&r-r6r0r;r:r?r<r=rKr>r#r%r$r�r�r�r�r7r_r
rergr8r8r8r9r�s��
oZ �


c&3
�E��
 ��85!
?
(

	rcCsFz,t|d�rt|d�}nt|�}|��WdSty@YdS0dS)Nr^)r�TF)r�rr�r)r�r�r8r8r9rks
rc	Cs`ddl}d}|j|d�}|jdddddd	�|jd
dtdd
�|jdd�}|jddddd�|jdddddd�|jdddddd�|jdd dd!d�|��}|jr�|jdur�|�d"d#�|j	du�rJ|j	}t
|��r4t|d$��*}|��t
|��tjd%�Wd�n1�s0Y|j�rFt
d&�|��n|�d"d'�|���n|jdu�r�|j}t
|��r�t�|d(��}|j|jd)�Wd�n1�s�0Yn|�d"d'�|���n�|jdu�r�t|j�d"k�r�|jd}tj}n,t|j�d*k�r|j\}}n|�d"|���t
|��r�t�|d(�� }|j||jd+�Wd�n1�sR0Y|j�r�|d,k�rzd-�|�}	nd.�||�}	t
|	�n|�d"d'�|��n�|jdu�r\|j�d�}
tj�|
�\}}d/d/d0d0d1d1d1d1d2�}
||
v�r�d3|
|nd4}|j}t�|
|��&}|D]}|�|��qWd�n1�s<0Y|j�r\t
d5�|
��dS)6Nrz3A simple command-line interface for tarfile module.)�descriptionz-vz	--verbose�
store_trueFzVerbose output)�action�default�helpz--filterz<filtername>zFilter for extraction)�metavar�choicesrlT)�requiredz-lz--list�	<tarfile>zShow listing of a tarfile)rmrlz-ez	--extract�+)rpz<output_dir>zExtract tarfile into target dir)�nargsrmrlz-cz--create)z<name>z<file>zCreate tarfile from sourcesz-tz--testzTest if a tarfile is validr#z&--filter is only valid for extraction
ryr`z{!r} is a tar archive.z{!r} is not a tar archive.
r�)rr$)r%rrz{!r} file is extracted.z+{!r} file is extracted into {!r} directory.r�r�r�)r�z.tgzz.xzz.txzz.bz2z.tbzz.tbz2z.tb2zw:rzz{!r} file created.)�argparse�ArgumentParser�add_argumentr�add_mutually_exclusive_group�
parse_argsrr,�exit�testrrr�rmrkrbrrSr�rr2r|�curdir�format_helpr*Zcreate�popr%�splitextr
)rsrh�parserr��argsr`r�ZtfrzrdZtar_namer��extZcompressionsZtar_modeZ	tar_files�	file_namer8r8r9�main~s���
�
�
�
�
2
0

0
�
�
.r��__main__)T)n�version�
__author__�__credits__�builtinsrr�rkr|r�r[r�r�rVr*�re�warningsr�r�r��AttributeError�NotImplementedErrorrPr��	NameError�__all__r3r�r�r?r:r<r;rQr#rmr�r�rTrUr.r�ZCONTTYPErBrArnrKrMr{r
rrrr~r�rpr�r�rGrIr�r�r�getfilesystemencodingr:r?rNrTrYr\rnrXrr
rrr	rrsrtrurKrvrwr��objectr�r��BufferedReaderr�r�r�r�r�r�r�rrrrrrrr)�compiler�rrrr�rpr8r8r8r9�<module> s

	����
uh



J�
1b_


Youez - 2016 - github.com/yon3zu
LinuXploit