Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 3.138.138.87
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : tarfile.cpython-310.opt-2.pyc
o

^b�s�@sF	dZdZdZddlmZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZzddlZWneyBdZYnwzddlZWneyTdZYnweefZzeef7ZWn	eyiYnwgd�ZdZdZed	Zd
ZdZdZdZd
ZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1e1Z2e e!e"e#e&e'e(e$e%e)e*e+fZ3e e!e(e+fZ4e)e*e+fZ5dZ6hd�Z7e8e8e8e9e9e9d �Z:ej;d!kr�d"Z<ne�=�Z<d#d$�Z>d%d&�Z?d'd(�Z@d)e2fd*d+�ZAd,d-�ZBdedfd.d/�ZCd0d1�ZDGd2d3�d3eE�ZFGd4d5�d5eF�ZGGd6d7�d7eF�ZHGd8d9�d9eF�ZIGd:d;�d;eF�ZJGd<d=�d=eF�ZKGd>d?�d?eK�ZLGd@dA�dAeK�ZMGdBdC�dCeK�ZNGdDdE�dEeK�ZOGdFdG�dGeK�ZPGdHdI�dI�ZQGdJdK�dK�ZRGdLdM�dMeS�ZTGdNdO�dOeS�ZUGdPdQ�dQejV�ZWGdRdS�dSeS�ZXGdTdU�dUeS�ZYdVdW�ZZeYjZdXdY�Z[e\dZk�r�e[�dSdS)[z0.9.0u"Lars Gustäbel (lars@gustaebel.de)u4Gustavo Niemeyer, Niels Gustäbel, Richard Townsend.�)�openN)�TarFile�TarInfo�
is_tarfile�TarError�	ReadError�CompressionError�StreamError�ExtractError�HeaderError�ENCODING�USTAR_FORMAT�
GNU_FORMAT�
PAX_FORMAT�DEFAULT_FORMATr�i�sustar  sustar00�d��0�1�2�3�4�5�6�7�L�K�S�x�g�X��)�path�linkpath�size�mtime�uid�gid�uname�gname>r+r&r,r%)Zatime�ctimer(r)r*r'�nt�utf-8cCs*	|�||�}|d|�|t|�tS�N)�encode�len�NUL)�s�length�encoding�errors�r8�0/usr/local/python-3.10/lib/python3.10/tarfile.py�stn�sr:cCs,	|�d�}|dkr|d|�}|�||�S)Nr���)�find�decode)r4r6r7�pr8r8r9�nts�s

r?cCs�	|ddvr3d}tt|�d�D]}|dK}|||d7}q|ddkr1dt|�d|}|Szt|dd�}t|��p@d	d�}W|StyPtd
��w)Nr)��r#�rA��ascii�strict�0�invalid header)�ranger2r?�int�strip�
ValueError�InvalidHeaderError)r4�n�ir8r8r9�nti�s ���rOrBcCs�	|}t|�}d|krd|dkr&nntd|d|fd�t}|S|tkrnd|d|kr=d|dkrnntd	��|dkrLtdg�}ntdg�}d||}t|d�D]}|�d|d@�|dL}q]|Std	��)
NrrBr#z%0*orDrCr@rAzoverflow in number field)rI�bytesr3r�	bytearrayrH�insertrK)rM�digits�formatZ
original_nr4rNr8r8r9�itn�s"
 0��

�rUcCs2	dtt�d|��}dtt�d|��}||fS)NrCZ
148B8x356BZ
148b8x356b)�sum�struct�unpack_from)�bufZunsigned_chksumZ
signed_chksumr8r8r9�calc_chksums�srZc	Cs�	|pd}|dkrdS|durt�|||�dSt||�\}}t|�D]}|�|�}t|�|kr4|d��|�|�q#|dkrR|�|�}t|�|krM|d��|�|�dS)Ni@r�unexpected end of data)�shutil�copyfileobj�divmodrH�readr2�write)	�src�dstr5�	exception�bufsize�blocks�	remainder�brYr8r8r9r]�s&


r]cCs8ttjdd�}|dur|�|d��|�}t|dd�dS)Nr6�backslashreplace� )�end)�getattr�sys�stdoutr1r=�print)r4r6r8r8r9�_safe_printsroc@�eZdZ	dS)rN��__name__�
__module__�__qualname__r8r8r8r9r�rc@rp)r
Nrqr8r8r8r9r
rur
c@rp)rNrqr8r8r8r9rrurc@rp)rNrqr8r8r8r9rrurc@rp)r	Nrqr8r8r8r9r	rur	c@rp)rNrqr8r8r8r9rrurc@rp)�EmptyHeaderErrorNrqr8r8r8r9rvrurvc@rp)�TruncatedHeaderErrorNrqr8r8r8r9rw rurwc@rp)�EOFHeaderErrorNrqr8r8r8r9rx#rurxc@rp)rLNrqr8r8r8r9rL&rurLc@rp)�SubsequentHeaderErrorNrqr8r8r8r9ry)ruryc@�.eZdZ	dd�Zdd�Zdd�Zdd�Zd	S)
�
_LowLevelFilecCsFtjtjtjBtjBd�|}ttd�r|tjO}t�||d�|_dS)N��r�w�O_BINARYi�)	�os�O_RDONLY�O_WRONLY�O_CREAT�O_TRUNC�hasattrrr�fd)�self�name�moder8r8r9�__init__6s��

z_LowLevelFile.__init__cCst�|j�dSr0)r��closer��r�r8r8r9r�?sz_LowLevelFile.closecCst�|j|�Sr0)r�r_r��r�r'r8r8r9r_B�z_LowLevelFile.readcCst�|j|�dSr0)r�r`r��r�r4r8r8r9r`Esz_LowLevelFile.writeN)rrrsrtr�r�r_r`r8r8r8r9r{0s	r{c@speZdZ	dd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
ddd�Zdd�Zdd�Z
dd�ZdS)�_Streamc	Cs�	d|_|durt||�}d|_|dkrt|�}|��}|pd|_||_||_||_||_d|_	d|_
d|_z�|dkrmzddl}Wnt
yMtd�d�w||_|�d�|_|d	krf|��|j|_WdS|��WdS|d
kr�zddl}Wnt
y�td�d�w|d	kr�d|_|��|_t|_WdS|��|_WdS|dkr�zddl}Wnt
y�td
�d�w|d	kr�d|_|��|_|j|_WdS|��|_WdS|dkr�td|��WdS|js�|j��d|_�)NTF�*��r�gzzzlib module is not availabler}�bz2�bz2 module is not available�xz�lzma module is not available�tar�unknown compression type %r) �_extfileobjr{�_StreamProxy�getcomptyper�r��comptype�fileobjrdrY�pos�closed�zlib�ImportErrorr�crc32�crc�
_init_read_gz�errorrc�_init_write_gzr��dbuf�BZ2Decompressor�cmp�OSError�
BZ2Compressor�lzma�LZMADecompressor�	LZMAError�LZMACompressorr�)	r�r�r�r�r�rdr�r�r�r8r8r9r�Ssv


�
�

�
�
z_Stream.__init__cCs$t|d�r|js|��dSdSdS)Nr�)r�r�r�r�r8r8r9�__del__�s�z_Stream.__del__cCs�	|j�d|jj|jj|jjd�|_t�dtt	�	���}|�
d|d�|j�d�r4|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�rW�packrI�time�_Stream__writer��endswithr�r%�basenamer1r3)r�Z	timestampr8r8r9r��s�z_Stream._init_write_gzcCsT	|jdkr|j�||j�|_|jt|�7_|jdkr#|j�|�}|�|�dS)Nr�r�)	r�r�r�r�r�r2r��compressr�r�r8r8r9r`�s

z
_Stream.writecCsb	|j|7_t|j�|jkr/|j�|jd|j��|j|jd�|_t|j�|jksdSdSr0)rYr2rdr�r`r�r8r8r9Z__write�s�z_Stream.__writecCs�	|jrdSd|_zP|jdkr|jdkr|j|j��7_|jdkrM|jrM|j�|j�d|_|jdkrM|j�t�	d|j
��|j�t�	d|jd@��W|jsX|j�
�dSdS|jsc|j�
�ww)NTr~r�r�r�r�l��)r�r�r�rYr��flushr�r`rWr�r�r�r�r�r�r8r8r9r��s&
�
��z
_Stream.closecCs�	|j�|jj�|_d|_|�d�dkrtd��|�d�dkr$td��t|�d��}|�d�|d	@rIt|�d��d
t|�d��}|�	|�|d@r[	|�d�}|rY|t
krZq[qN|d
@rm	|�d�}|rk|t
krlqmq`|d@rx|�d�dSdS)Nr�r$s��not a gzip filer#�zunsupported compression method��rCrBT�)r��
decompressobjr�r�r��
_Stream__readrr�ordr_r3)r��flagZxlenr4r8r8r9r��s6
 

�
��z_Stream._init_read_gzcC�	|jSr0)r�r�r8r8r9�tell��z_Stream.tellrcCsX	||jdkr(t||j|j�\}}t|�D]}|�|j�q|�|�|jStd��)Nrz seeking backwards is not allowed)r�r^rdrHr_r	)r�r�rerfrNr8r8r9�seek�s
�z_Stream.seekcCs"	|�|�}|jt|�7_|Sr0)�_readr�r2)r�r'rYr8r8r9r_s
z_Stream.readc
Cs�	|jdkr|�|�St|j�}|jg}||krV|jr"|j}d|_n
|j�|j�}|s,qVz|j�	|�}Wn|j
yF}ztd�|�d}~ww|�|�|t|�7}||ksd�
|�}||d�|_|d|�S)Nr�r�zinvalid compressed data)r�r�r2r�rYr�r_rdr��
decompressrcr�append�join)r�r'�c�trY�er8r8r9r�s0



��
�
z
_Stream._readcCsr	t|j�}|jg}||kr'|j�|j�}|sq'|�|�|t|�7}||ksd�|�}||d�|_|d|�S)Nr�)r2rYr�r_rdr�r�)r�r'r�r�rYr8r8r9Z__read)s

�
z_Stream.__readN)r)rrrsrtr�r�r�r`r�r�r�r�r�r_r�r�r8r8r8r9r�Hs
F
	

r�c@rz)
r�cCs||_|j�t�|_dSr0)r�r_�	BLOCKSIZErY)r�r�r8r8r9r�?sz_StreamProxy.__init__cCs|jj|_|jSr0)r�r_rYr�r8r8r9r_Cs
z_StreamProxy.readcCsL|j�d�rdS|jdd�dkr|jdd�dkrd	S|j�d
�r$dSdS)
Ns�r�r�sBZhr��
s1AY&SYr�)s]�s�7zXZr�r�)rY�
startswithr�r8r8r9r�Gs$z_StreamProxy.getcomptypecCs|j��dSr0)r�r�r�r8r8r9r�Qr�z_StreamProxy.closeN)rrrsrtr�r_r�r�r8r8r8r9r�:s
r�c@sheZdZ	ddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Ze	j
fdd�Zddd�Zdd�Z
dd�ZdS)�_FileInFileNcCs�||_||_||_d|_t|dd�|_d|_|durd|fg}d|_g|_d}|j}|D]&\}}||kr>|j�	d||df�|j�	d||||f�||7}||}q,||jkre|j�	d||jdf�dSdS)Nrr�FT)
r��offsetr'�positionrkr�r��	map_index�mapr�)r�r�r�r'Z	blockinfoZlastposZrealposr8r8r9r�^s*


�z_FileInFile.__init__cCsdSr0r8r�r8r8r9r�w�z_FileInFile.flushcC�dS�NTr8r�r8r8r9�readablezr�z_FileInFile.readablecCr��NFr8r�r8r8r9�writable}r�z_FileInFile.writablecCs
|j��Sr0)r��seekabler�r8r8r9r���
z_FileInFile.seekablecCr�r0)r�r�r8r8r9r��r�z_FileInFile.tellcCs�	|tjkrtt|d�|j�|_|jS|tjkr5|dkr(t|j|d�|_|jSt|j||j�|_|jS|tjkrJtt|j||j�d�|_|jStd��)NrzInvalid argument)	�io�SEEK_SET�min�maxr'r��SEEK_CUR�SEEK_ENDrK)r�r��whencer8r8r9r��s


��
��z_FileInFile.seekc	Cs	|dur|j|j}n	t||j|j�}d}|dkr�	|j|j\}}}}||jkr1|kr4nnqG|jd7_|jt|j�krFd|_qt|||j�}|rq|j�||j|�|j�|�}t|�|krlt	d��||7}n|t
|7}||8}|j|7_|dks|S)Nr�rTr#r[)r'r�r�r�r�r2r�r�r_rr3)	r�r'rY�data�start�stopr�r5rgr8r8r9r_�s4�
�z_FileInFile.readcCs&|�t|��}||dt|��<t|�Sr0)r_r2)r�rgrYr8r8r9�readinto�sz_FileInFile.readintocCs
d|_dSr�)r�r�r8r8r9r��r�z_FileInFile.closer0)rrrsrtr�r�r�r�r�r�r�r�r�r_r�r�r8r8r8r9r�Xs

r�cseZdZ�fdd�Z�ZS)�ExFileObjectcs&t|j|j|j|j�}t��|�dSr0)r�r��offset_datar'�sparse�superr�)r��tarfile�tarinfor���	__class__r8r9r��s
�zExFileObject.__init__)rrrsrtr��
__classcell__r8r8r�r9r��sr�c@s
eZdZ	edwidd�dd�dd�dd�d	d
�dd�d
d�dd�dd�dd�dd�dd�dd�dd�dd�dd �d!d"�d#d$�d%d$�d&d$��Zdxd(d)�Zed*d+��Zejd,d+��Zed-d.��Z	e	jd/d.��Z	d0d1�Z
d2d3�Zee
d4fd5d6�Zd7d8�Zd9d:�Zd;d<�Zed=d>��Zd?d@�ZedAdB��ZedCdD��ZedEdF��ZedGdH��ZedIdJ��ZedKdL��ZdMdN�ZdOdP�ZdQdR�ZdSdT�ZdUdV�Z dWdX�Z!dYdZ�Z"d[d\�Z#d]d^�Z$d_d`�Z%dadb�Z&dcdd�Z'dedf�Z(dgdh�Z)didj�Z*dkdl�Z+dmdn�Z,dodp�Z-dqdr�Z.dsdt�Z/dudv�Z0d$S)yrr�zName of the archive member.r�zPermission bits.r)z6User ID of the user who originally stored this member.r*z7Group ID of the user who originally stored this member.r'zSize in bytes.r(zTime of last modification.�chksumzHeader checksum.�typez�File type. type is usually one of these constants: REGTYPE, AREGTYPE, LNKTYPE, SYMTYPE, DIRTYPE, FIFOTYPE, CONTTYPE, CHRTYPE, BLKTYPE, GNUTYPE_SPARSE.�linknamezcName of the target file name, which is only present in TarInfo objects of type LNKTYPE and SYMTYPE.r+z
User name.r,zGroup name.�devmajorzDevice major number.�devminorzDevice minor number.r�zThe tar header starts here.r�zThe file's data starts here.�pax_headerszMA dictionary containing key-value pairs of an associated pax extended header.r�zSparse member information.r�N�_sparse_structs�_link_targetr�cCsl	||_d|_d|_d|_d|_d|_d|_t|_d|_	d|_
d|_d|_d|_
d|_d|_d|_i|_dS)Ni�rr�)r�r�r)r*r'r(r��REGTYPEr�r�r+r,r�rr�r�r�r�r�r�r8r8r9r��s$
zTarInfo.__init__cCr�r0�r�r�r8r8r9r%�zTarInfo.pathcC�
||_dSr0rrr8r8r9r%�
cCr�r0�r�r�r8r8r9r&rzTarInfo.linkpathcCrr0r
)r�r�r8r8r9r&r	cCsd|jj|jt|�fS)Nz<%s %r at %#x>)r�rrr��idr�r8r8r9�__repr__szTarInfo.__repr__cCsn	|j|jd@|j|j|j|j|j|j|j|j	|j
|j|jd�
}|dt
kr5|d�d�s5|dd7<|S)N�)
r�r�r)r*r'r(r�r�r�r+r,r�rr�r��/)r�r�r)r*r'r(r�r�r�r+r,r�r�DIRTYPEr�)r��infor8r8r9�get_infos$�zTarInfo.get_info�surrogateescapecCsR	|��}|tkr|�|||�S|tkr|�|||�S|tkr%|�||�Std��)Nzinvalid format)rr
�create_ustar_headerr�create_gnu_headerr�create_pax_headerrK)r�rTr6r7rr8r8r9�tobuf3sz
TarInfo.tobufcCsp	t|d<t|d�||��tkrtd��t|d�||��tkr0|�|d||�\|d<|d<|�|t||�S)N�magicr�zlinkname is too longr��prefix)	�POSIX_MAGICr2r1�LENGTH_LINKrK�LENGTH_NAME�_posix_split_name�_create_headerr
)r�rr6r7r8r8r9rAszTarInfo.create_ustar_headercCs�	t|d<d}t|d�||��tkr||�|dt||�7}t|d�||��tkr7||�|dt||�7}||�|t	||�S)Nrr�r�r�)
�	GNU_MAGICr2r1r�_create_gnu_long_header�GNUTYPE_LONGLINKr�GNUTYPE_LONGNAMErr)r�rr6r7rYr8r8r9rNszTarInfo.create_gnu_headerc
	Cs$	t|d<|j��}ddtfddtfddfD]2\}}}||vr qz
||�dd	�Wnty9||||<Yqwt||�|krH||||<qd
D]0\}}||vrXd||<qK||}d|krjd|d
krqnnt|t	�r{t
|�||<d||<qK|r�|�|t|�}	nd}	|	|�
|tdd�S)Nrr�r%r�r&)r+r+� )r,r,r"rDrE))r)rB)r*rB)r'�)r(r#rrBr#r�r�)rr�copyrrr1�UnicodeEncodeErrorr2�
isinstance�float�str�_create_pax_generic_header�XHDTYPErr
)
r�rr6rr�Zhnamer5rS�valrYr8r8r9r\s<
���*�zTarInfo.create_pax_headercCs	|�|td�S)Nr/)r)�XGLTYPE)�clsrr8r8r9�create_pax_global_header�sz TarInfo.create_pax_global_headercCs~	|�d�}tdt|��D]-}d�|d|��}d�||d��}t|�||��tkr:t|�||��tkr:||fSq
td��)Nrr#zname is too long)�splitrHr2r�r1�
LENGTH_PREFIXrrK)r�r�r6r7�
componentsrNrr8r8r9r�s
���zTarInfo._posix_split_namec
Cs�	|�d�ttfv}|r!t|�dd�d|�}t|�dd�d|�}ntdd||�}tdd||�}t|�dd�d||�t|�d	d�d
@d|�t|�dd�d|�t|�dd�d|�t|�d
d�d|�t|�dd�d|�d|�dt�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)Nr�r�rrBrr�r�rr�r
r)r*r'r#r(s        r�rr+r"r,rrz%dsr�i����z%06orDi����)
�get�CHRTYPE�BLKTYPErUr:rrrWr�r�r�rZrP)
rrTr6r7Zhas_device_fieldsr�r�partsrYr�r8r8r9r�s6

�&zTarInfo._create_headercCs0	tt|�t�\}}|dkr|t|t7}|S)Nr)r^r2r�r3)�payloadrerfr8r8r9�_create_payload�s
zTarInfo._create_payloadcCsT	|�||�t}i}d|d<||d<t|�|d<t|d<|�|t||�|�|�S)Nz
././@LongLinkr�r�r'r)r1r3r2rrr
r7)r-r�r�r6r7rr8r8r9r�s�zTarInfo._create_gnu_long_headerc	Cs.	d}|��D]\}}z|�dd�Wqtyd}Yq wd}|r(|d7}|��D]I\}}|�d�}|r>|�|d�}n|�d�}t|�t|�d}d	}	}
	|tt|
��}	|	|
kr_qb|	}
qR|tt|
�d
�d|d|d
7}q,i}d|d<||d<t|�|d<t|d<|�|td
d�|�	|�S)NFr/rETr�s21 hdrcharset=BINARY
rr�rrD� �=�
z././@PaxHeaderr�r�r'rr�)
�itemsr1r%r2r(rPrrr
r7)r-rr�r6�binary�keyword�value�records�lrMr>rr8r8r9r)�sD�

�(�z"TarInfo._create_pax_generic_headerc	Csj	t|�dkrtd��t|�tkrtd��|�t�tkr td��t|dd��}|t|�vr2t	d��|�}t
|dd�||�|_t|dd	��|_t|d	d
��|_
t|d
d��|_t|dd��|_t|dd��|_||_|dd
�|_t
|d
d�||�|_t
|dd�||�|_t
|dd�||�|_t|dd��|_t|dd��|_t
|dd�||�}|jtkr�|j�d�r�t|_|jtk�rd}g}td�D]1}	zt|||d��}
t||d|d��}Wnty�Y�qw|�|
|f�|d7}q�t|d�}t|dd��}
|||
f|_ |�!��r"|j�"d�|_|�r3|jt#v�r3|d|j|_|S)Nrzempty headerztruncated headerzend of file header��zbad checksumr�l�t�|��ii	i)iIiQiYi�ri�r�r#�i�i�i�)$r2rvr�rw�countr3rxrOrZrLr?r�r�r)r*r'r(r�r�r�r+r,r�r�AREGTYPEr�r�GNUTYPE_SPARSErHrKr��boolr�isdir�rstrip�	GNU_TYPES)r-rYr6r7r��objrr��structsrNr��numbytes�
isextended�origsizer8r8r9�frombufs^�

zTarInfo.frombufcCs:	|j�t�}|�||j|j�}|j��t|_|�|�Sr0)	r�r_r�rUr6r7r�r��_proc_member)r-r�rYrPr8r8r9�fromtarfileTs

zTarInfo.fromtarfilecCsR	|jttfvr
|�|�S|jtkr|�|�S|jtttfvr$|�	|�S|�
|�Sr0)r�r!r �
_proc_gnulongrK�_proc_sparser*r,�SOLARIS_XHDTYPE�	_proc_pax�
_proc_builtin)r�r�r8r8r9rVis




zTarInfo._proc_membercCsT	|j��|_|j}|��s|jtvr||�|j�7}||_|�	|j
|j|j�|Sr0)
r�r�r��isregr��SUPPORTED_TYPES�_blockr'r��_apply_pax_inforr6r7)r�r�r�r8r8r9r\vszTarInfo._proc_builtinc
Cs�	|j�|�|j��}z|�|�}Wnty%}ztt|��d�d}~ww|j|_|j	t
kr:t||j|j
�|_|S|j	tkrHt||j|j
�|_|Sr0)r�r_r_r'rWrryr(r�r�r!r?r6r7r�r r�)r�r�rY�nextr�r8r8r9rX�s��

�zTarInfo._proc_gnulongc
	Cs�	|j\}}}|`|rT|j�t�}d}td�D]4}zt|||d��}t||d|d��}	Wn
ty;YqLw|rG|	rG|�||	f�|d7}qt|d�}|s||_	|j�
�|_|j|�|j
�|_||_
|S)Nr�r#rHi�)rr�r_r�rHrOrKr�rLr�r�r�r_r'r�)
r�r�rQrSrTrYr�rNr�rRr8r8r9rY�s.�
�
zTarInfo._proc_sparsec
Cs.	|j�|�|j��}|jtkr|j}n|j��}t�	d|�}|dur-|�
d��d�|d<|�d�}|dkr:|j
}nd}t�d�}d}	|�||�}|sMq�|��\}	}
t|	�}	|	dkr_td	��||�d
�d|�d�|	d�}|�|
dd|j�}
|
tvr�|�|||j
|j�}n	|�|dd|j�}|||
<||	7}qDz|�|�}Wnty�}
ztt|
��d�d}
~
wwd|vr�|�||�n!d|vr�|�|||�n|�d
�dkr�|�d�dkr�|�|||�|jtt fv�r|�!||j
|j�|j"|_"d|v�r|j#}|�$��s
|jt%v�r||�|j�7}||_"|S)Ns\d+ hdrcharset=([^\n]+)\nr#r/�
hdrcharsetZBINARYs(\d+) ([^=]+)=rTrGr$�GNU.sparse.map�GNU.sparse.sizezGNU.sparse.major�1zGNU.sparse.minorrFr')&r�r_r_r'r�r,rr$�re�search�groupr=r2r6�compile�match�groupsrIrLrjr��_decode_pax_fieldr7�PAX_NAME_FIELDSrWrryr(�_proc_gnusparse_01�_proc_gnusparse_00�_proc_gnusparse_10r*rZr`r�r�r]r^)r�r�rYrrkrcr6Zregexr�r5r=r>rar�r�r8r8r9r[�sr



$
	��
����
zTarInfo._proc_paxcCsj	g}t�d|�D]}|�t|�d���q	g}t�d|�D]}|�t|�d���qtt||��|_dS)Ns\d+ GNU.sparse.offset=(\d+)\nr#s\d+ GNU.sparse.numbytes=(\d+)\n)rg�finditerr�rIri�list�zipr�)r�rarrYZoffsetsrkrRr8r8r9rp!szTarInfo._proc_gnusparse_00cCsB	dd�|d�d�D�}tt|ddd�|ddd���|_dS)NcSsg|]}t|��qSr8)rI)�.0�xr8r8r9�
<listcomp>/sz.TarInfo._proc_gnusparse_01.<locals>.<listcomp>rd�,r$r#)r/rsrtr�)r�rarr�r8r8r9ro,s(zTarInfo._proc_gnusparse_01cCs�	d}g}|j�t�}|�dd�\}}t|�}t|�|dkrBd|vr+||j�t�7}|�dd�\}}|�t|��t|�|dks|j��|_t	t
|ddd�|ddd���|_dS)Nr:r#r$)r�r_r�r/rIr2r�r�r�rsrtr�)r�rarr��fieldsr�rYZnumberr8r8r9rq2s�(zTarInfo._proc_gnusparse_10c	Cs�	|��D]T\}}|dkrt|d|�q|dkr!t|dt|��q|dkr.t|dt|��q|tvrY|tvrJzt||�}WntyId}Ynw|dkrS|�d�}t|||�q|��|_dS)NzGNU.sparse.namer%rer'zGNU.sparse.realsizerr)	r;�setattrrI�
PAX_FIELDS�PAX_NUMBER_FIELDSrKrNr$r)r�rr6r7r=r>r8r8r9r`Bs(�
�zTarInfo._apply_pax_infocCs0	z|�|d�WSty|�||�YSw)NrE)r=�UnicodeDecodeError)r�r>r6Zfallback_encodingZfallback_errorsr8r8r9rmYs�zTarInfo._decode_pax_fieldcCs$	t|t�\}}|r|d7}|tS)Nr#)r^r�)r�rIrerfr8r8r9r_as
zTarInfo._blockcCs	|jtvSr0)r��
REGULAR_TYPESr�r8r8r9r]j�
z
TarInfo.isregcCs
	|��Sr0)r]r�r8r8r9�isfilenszTarInfo.isfilecC�	|jtkSr0)r�rr�r8r8r9rMrrz
TarInfo.isdircCr�r0)r��SYMTYPEr�r8r8r9�issymvrz
TarInfo.issymcCr�r0)r��LNKTYPEr�r8r8r9�islnkzrz
TarInfo.islnkcCr�r0)r�r3r�r8r8r9�ischr~rz
TarInfo.ischrcCr�r0)r�r4r�r8r8r9�isblk�rz
TarInfo.isblkcCr�r0)r��FIFOTYPEr�r8r8r9�isfifo�rzTarInfo.isfifocCs
|jduSr0)r�r�r8r8r9�issparse�r�zTarInfo.issparsecCs	|jtttfvSr0)r�r3r4r�r�r8r8r9�isdev�sz
TarInfo.isdevr8)r�)1rrrsrt�dict�	__slots__r��propertyr%�setterr&rrrrrrrr�classmethodr.r�staticmethodrr7rr)rUrWrVr\rXrYr[rprorqr`rmr_r]r�rMr�r�r�r�r�r�r�r8r8r8r9r�s����������
�����������





1

#
	

2
>

h	rc@s�eZdZ	dZdZdZdZeZe	Z
dZeZ
eZ				d[dd�Zedddefd	d
��Zed\dd��Zed]dd��Zed]dd��Zed^dd��Zddddd�Zdd�Zdd�Zdd�Zdd �Zd_d!d"�Zd`dd$�d%d&�Zdadd'�d(d)�Zdbd*d+�Z dcdd-�d.d/�Z!dddd-�d1d2�Z"d3d4�Z#	#	ded5d6�Z$d7d8�Z%d9d:�Z&d;d<�Z'd=d>�Z(d?d@�Z)dAdB�Z*dCdD�Z+dEdF�Z,dGdH�Z-dIdJ�Z.dfdKdL�Z/dMdN�Z0dbdOdP�Z1dQdR�Z2dSdT�Z3dUdV�Z4dWdX�Z5dYdZ�Z6dS)grrFr#Nr}rc
Cs�	ddddd�}||vrtd��||_|||_|s5|jdkr+tj�|�s+d|_d|_t||j�}d	|_n |durIt|d
�rIt	|j
ttf�rI|j
}t|d�rR|j|_d|_|r]tj�
|�nd|_
||_|durj||_|durq||_|durx||_|dur||_|dur�||_|	|_|
dur�|jtkr�|
|_ni|_|dur�||_|dur�||_|
|_d	|_g|_d	|_|j��|_i|_z}|jd
kr�d|_ |�!�|_ |jdk�r	|j�"|j�z|j�#|�}|j�$|�Wn$t%y�|j�"|j�Y�qt&�y
}zt't|��d�d}~wwq�|jdv�r4d|_|j�r7|j�(|j�)��}|j�*|�|jt+|�7_WdSWdSWdS|j�sF|j�,�d|_�)N�rbzr+b�wb�xb�r}�ar~rv�!mode must be 'r', 'a', 'w' or 'x'r�r~Fr�r�Tr}�r�r~rv)-rKr��_moder�r%�exists�	bltn_openr�r�r&r�r(rP�abspathr�rTr��dereference�ignore_zerosr6r7rr�debug�
errorlevel�copybufsizer��members�_loadedr�r��inodes�firstmemberrar�rWr�rxrrr.r$r`r2r�)r�r�r�r�rTr�r�r�r6r7rr�r�r�Zmodesr�rYr8r8r9r��s�
�


����
zTarFile.__init__cs�	|s	|s	td��|dvrp�fdd�}g}t�j|d�D]G}t��j|�}	|dur.|��}
z
|	|d|fi|��WSttfyc}z|�d|�d|���|durY|�|
�WYd}~qd}~wwd	�	|�}td
|����d|vr�|�
dd�\}
}|
pd}
|p�d
}|�jvr�t��j|�}	ntd|��|	||
|fi|��Sd|vr�|�
dd�\}
}|
p�d}
|p�d
}|
dvr�td��t||
|||�}z�||
|fi|��}Wn|���d|_
|S|dvr�j|||fi|��Std��)Nznothing to open)r}�r:*cs�j|dkS)N�taropen)�	OPEN_METH)r��r-r8r9�not_compressedEr�z$TarFile.open.<locals>.not_compressed��keyr}z	- method z: �
z'file could not be opened successfully:
�:r#r�r��|r|zmode must be 'r' or 'w'Fr�zundiscernible mode)rK�sortedr�rkr�rrr�r�r�r/r�r�r�r�)r-r�r�r�rd�kwargsr�Z
error_msgsr��funcZ	saved_posr�Zerror_msgs_summary�filemode�streamr�r8r�r9rs\#
��

zTarFile.opencKs&	|dvr	td��||||fi|��S)Nr�r�)rK)r-r�r�r�r�r8r8r9r�yszTarFile.taropenr�c	
Ks�	|dvr	td��zddlm}Wntytd�d�wz|||d||�}WntyC}z|dur>|dkr>td�|��d}~wwz
|j|||fi|��}Wn!tyk}z|��|dkrftd�|��d}~w|���d	|_	|S)
N�r}r~rv�mode must be 'r', 'w' or 'x'r)�GzipFilezgzip module is not availablergr}r�F)
rK�gzipr�r�rr�rr�r�r�)	r-r�r�r��
compresslevelr�r�r�r�r8r8r9�gzopen�s:
�
��
�zTarFile.gzopenc	
Ks�	|dvr	td��zddlm}Wntytd�d�w||p"|||d�}z
|j|||fi|��}Wn#ttfyP}z|��|dkrKt	d�|��d}~w|���d	|_
|S)
Nr�r�r)�BZ2Filer�)r�r}znot a bzip2 fileF)rKr�r�r�rr�r��EOFErrorr�rr�)	r-r�r�r�r�r�r�r�r�r8r8r9�bz2open�s,
�
�zTarFile.bz2openc

Ks�	|dvr	td��z
ddlm}m}Wntytd�d�w||p$|||d�}z
|j|||fi|��}Wn#|tfyR}	z|��|dkrMt	d�|	��d}	~	w|���d	|_
|S)
Nr�r�r)�LZMAFiler�r�)�presetr}znot an lzma fileF)rKr�r�r�r�rr�r�r�rr�)
r-r�r�r�r�r�r�r�r�r�r8r8r9�xzopen�s,
�
�zTarFile.xzopenr�r�r�r�)r�r�r�r�cCs�	|jrdSd|_z;|jdvr8|j�ttd�|jtd7_t|jt�\}}|dkr8|j�tt|�W|j	sC|j�
�dSdS|j	sN|j�
�ww)NTr�r$r)r�r�r�r`r3r�r�r^�
RECORDSIZEr�r�)r�rerfr8r8r9r��s"
�
��z
TarFile.closecCs$	|�|�}|durtd|��|S)Nzfilename %r not found)�
_getmember�KeyError)r�r�r�r8r8r9�	getmember�s

zTarFile.getmembercCs	|��|js|��|jSr0)�_checkr��_loadr�r�r8r8r9�
getmemberss
zTarFile.getmemberscCs	dd�|��D�S)NcSsg|]}|j�qSr8r)rur�r8r8r9rwsz$TarFile.getnames.<locals>.<listcomp>)r�r�r8r8r9�getnamesszTarFile.getnamescCsL	|�d�|dur
|j}|dur|}tj�|�\}}|�tjd�}|�d�}|��}||_	|durA|j
s;t�|�}qHt�|�}nt�
|���}d}|j}t�|�r�|j|jf}	|j
st|jdkrt|	|jvrt||j|	krtt}
|j|	}q�t}
|	dr||j|	<n/t�|�r�t}
n't�|�r�t}
nt�|�r�t}
t�|�}nt�|�r�t}
n
t� |�r�t!}
ndS||_||_"|j#|_$|j%|_&|
tkr�|j'|_(nd|_(|j)|_*|
|_+||_,t-r�zt-�.|j$�d|_/Wn	t0y�Ynwt1�rzt1�2|j&�d|_3Wn
t0�yYnw|
tt!fv�r$t4td��r$t4td��r$t�5|j6�|_7t�8|j6�|_9|S)N�awxrr�r#r�major�minor):r�r�r�r%�
splitdriver��sep�lstripr�r�r��lstat�stat�fstat�fileno�st_mode�S_ISREG�st_ino�st_dev�st_nlinkr�r�r�S_ISDIRr�S_ISFIFOr��S_ISLNKr��readlink�S_ISCHRr3�S_ISBLKr4r��st_uidr)�st_gidr*�st_sizer'�st_mtimer(r�r��pwd�getpwuidr+r��grp�getgrgidr,r�r��st_rdevr�r�r)r�r��arcnamer��drvr�Zstatresr�Zstmd�inoder�r8r8r9�
gettarinfos�


��
�





��zTarFile.gettarinfoT)r�cCs�	|��|dur|}|D]n}|rStt�|j��td|jp |j|jp%|jf�|�	�s1|�
�r>tdd|j|jf�ntd|j
�tdt�|j�dd��t|j|��r\dnd�|rx|��rmtd	|j�|��rxtd
|j�t�q
dS)Nz%s/%sz%10sz%d,%dz%10dz%d-%02d-%02d %02d:%02d:%02dr�rr�z-> zlink to )r�ror�r�r�r+r)r,r*r�r�r�rr'r��	localtimer(r�rMr�r�r�rn)r��verboser�r�r8r8r9rsxs4
����zTarFile.list��filtercCsR	|�d�|dur|}|jdur$tj�|�|jkr$|�dd|�dS|�d|�|�||�}|dur>|�dd|�dS|durT||�}|durT|�dd|�dS|��rvt|d��}|�	||�Wd�dS1sowYdS|�
�r�|�	|�|r�tt�|��D]}|j
tj�||�tj�||�||d�q�dSdS|�	|�dS)	Nr�r$ztarfile: Skipped %rr#ztarfile: Unsupported type %rztarfile: Excluded %rr�r�)r�r�r�r%r��_dbgr�r]r��addfilerMr��listdir�addr�)r�r�r��	recursiver�r��fr8r8r9r��s>
	"�
��zTarFile.addcCs�	|�d�t�|�}|�|j|j|j�}|j�|�|jt	|�7_|j
}|durXt||j|j|d�t
|jt�\}}|dkrO|j�tt|�|d7}|j|t7_|j�|�dS)Nr�)rdrr#)r�r$rrTr6r7r�r`r�r2r�r]r'r^r�r3r�r�)r�r�r�rYrdrerfr8r8r9r��s

zTarFile.addfile�.��
numeric_ownercCs�	g}|dur	|}|D]}|��r|�|�t�|�}d|_|j|||��|d�q|jdd�d�|��|D]@}tj�	||j
�}z|j|||d�|�||�|�
||�Wq9tyy}z|jdkrg�|�dd|�WYd}~q9d}~wwdS)	N���	set_attrsr�cSs|jSr0r)r�r8r8r9�<lambda>�sz$TarFile.extractall.<locals>.<lambda>r�r�r#�tarfile: %s)rMr�r$r��extract�sort�reverser�r%r�r��chown�utime�chmodr
r�r�)r�r%r�r�Zdirectoriesr��dirpathr�r8r8r9�
extractall�s6

�
���zTarFile.extractallr�c
Cs	|�d�t|t�r|�|�}n|}|��r tj�||j�|_	z|j
|tj�||j�||d�WdStym}z/|j
dkr@�|jdurO|�dd|j�n|�dd|j|jf�WYd}~dSWYd}~dSd}~wty�}z|j
dkrz�|�dd|�WYd}~dSd}~ww)Nr}r�rr#r�ztarfile: %s %r)r�r&r(r�r�r�r%r�r�r�_extract_memberr�r�r��filenamer��strerrorr
)r��memberr%r�r�r�r�r8r8r9r�s4

�

&��
��zTarFile.extractcCs|	|�d�t|t�r|�|�}n|}|��s|jtvr"|�||�S|��s*|�	�r<t|j
t�r4td��|�
|�|��SdS)Nr}z'cannot extract (sym)link as file object)r�r&r(r�r]r�r^�
fileobjectr�r�r�r�r	�extractfile�_find_link_target)r�rr�r8r8r9r
2s

zTarFile.extractfilecCsX	|�d�}|�dtj�}tj�|�}|r tj�|�s t�|�|��s(|�	�r5|�
dd|j|jf�n|�
d|j�|�
�rG|�||�nF|��rR|�||�n;|��r]|�||�n0|��se|��rl|�||�n!|��st|�	�r{|�||�n|jtvr�|�||�n|�||�|r�|�|||�|�	�s�|�||�|�||�dSdSdS)Nrr#z%s -> %s)rNr�r�r�r%�dirnamer��makedirsr�r�r�r�r�r]�makefilerM�makedirr��makefifor�r��makedev�makelinkr�r^�makeunknownrrr)r�r��
targetpathr�r�Z	upperdirsr8r8r9rRs:


�zTarFile._extract_membercCs*	z	t�|d�WdStyYdSw)Nr�)r��mkdir�FileExistsError�r�r�rr8r8r9r�s�zTarFile.makedircCs�	|j}|�|j�|j}t|d��?}|jdur8|jD]\}}|�|�t|||t|�q|�|j�|�	�nt|||jt|�Wd�dSWd�dS1sTwYdS)Nr�)
r�r�r�r�r�r�r]rr'�truncate)r�r�r�sourcerd�targetr�r'r8r8r9r�s


�"�zTarFile.makefilecCs$	|�||�|�dd|j�dS)Nr#z9tarfile: Unknown file type %r, extracted as regular file.)rr�r�rr8r8r9r�s

�zTarFile.makeunknowncCs"	ttd�r
t�|�dStd��)N�mkfifozfifo not supported by system)r�r�rr
rr8r8r9r�s
zTarFile.makefifocCs`	ttd�rttd�std��|j}|��r|tjO}n|tjO}t�||t�	|j
|j��dS)N�mknodrz'special devices not supported by system)r�r�r
r�r�r��S_IFBLK�S_IFCHRrrr�r)r�r�rr�r8r8r9r�s
�zTarFile.makedevcCs�	z6|��rtj�|�rt�|�t�|j|�WdStj�|j�r,t�	|j|�WdS|�
|�|�|�WdStyXz
|�
|�|�|�WYdSt
yWtd�d�ww)Nz%unable to resolve link inside archive)r�r�r%�lexists�unlink�symlinkr�r�r�linkrr�symlink_exceptionr�r
rr8r8r9r�s(

��
��zTarFile.makelinkc
Cs�	ttd�rot��dkrq|j}|j}|s@ztrt�|j�d}Wn	ty)Ynwzt	r5t	�
|j�d}Wn	ty?Ynwz|��rTttd�rTt�
|||�WdSt�|||�WdStyn}ztd�|�d}~wwdSdS)N�geteuidrr$�lchownzcould not change owner)r�r�r$r*r)r��getgrnamr,r�r��getpwnamr+r�r%rr�r
)r�r�rr��g�ur�r8r8r9r�s8����
���z
TarFile.chownc
Cs:	z
t�||j�WdSty}ztd�|�d}~ww)Nzcould not change mode)r�rr�r�r
�r�r�rr�r8r8r9r�s
��z
TarFile.chmodc
CsN	ttd�sdSz
t�||j|jf�WdSty&}ztd�|�d}~ww)Nrz"could not change modification time)r�r�rr(r�r
r*r8r8r9r�s

��z
TarFile.utimecCs<	|�d�|jdur|j}d|_|S|j|j��kr.|j�|jd�|j�d�s.td��d}	z|j�	|�}Wn�t
yf}z!|jr\|�dd|j|f�|jt
7_WYd}~q0WYd}~n�d}~wty�}z-|jr�|�dd|j|f�|jt
7_WYd}~q0|jdkr�tt|��d�WYd}~nqd}~wty�|jdkr�td�d�Yn[ty�}z|jdkr�tt|��d�WYd}~nBd}~wty�}ztt|��d�d}~wt�y
}zzddl}t||j�r�td	|���d�|�t�y|�wd}~ww	|du�r|j�|�|Sd|_|S)
NZrar#r[Tr$z0x%X: %srz
empty filezzlib error: )r�r�r�r�r�r�r_rr�rWrxr�r�r�rLr(rvrwry�	Exceptionr�r&r�r�r�r�r�)r��mr�r�r�r8r8r9ra	sv

��
��

�
������	
�zTarFile.nextcCsp	|��}|dur|d|�|��}|rtj�|�}t|�D]}|r*tj�|j�}n|j}||kr5|SqdSr0)r��indexr�r%�normpath�reversedr�)r�r�r��	normalizer�r�member_namer8r8r9r�E	s��zTarFile._getmembercCs"		|��}|durqqd|_dSr�)rar�)r�r�r8r8r9r�\	s�
z
TarFile._loadcCs@	|jrtd|jj��|dur|j|vrtd|j��dSdS)Nz%s is closedzbad operation for mode %r)r�r�r�rrr�)r�r�r8r8r9r�f	s�zTarFile._checkcCsb	|��rd�tdtj�|j�|jf��}d}n|j}|}|j||dd�}|dur/t	d|��|S)NrT)r�r0zlinkname %r not found)
r�r�r�r�r%rr�r�r�r�)r�r�r��limitrr8r8r9ro	s zTarFile._find_link_targetccs��	|jr
|jEdHdSd}|jdur|��}|d7}|V	|t|j�kr-|j|}n|js<|��}|s;d|_dSndS|d7}|Vq )Nrr#T)r�r�r�rar2)r�r-r�r8r8r9�__iter__�	s.�
��zTarFile.__iter__cCs"	||jkrt|tjd�dSdS)N��file)r�rnrl�stderr)r��level�msgr8r8r9r��	s
�zTarFile._dbgcCs|��|Sr0)r�r�r8r8r9�	__enter__�	szTarFile.__enter__cCs.|dur
|��dS|js|j��d|_dSr�)r�r�r�r�)r�r�r>�	tracebackr8r8r9�__exit__�	s


zTarFile.__exit__)
Nr}NNNNNNrNNNN)r}N)r}Nr�)r}NN)NNN)Tr�r0)r�N)r�T)TFr�)7rrrsrtr�r�r�r�rrTrr6r7rr�r�r	r�r�r�rr�r�r�r�r�r�r�r�r�r�rsr�r�rr�r
rrrrrrrrrrrar�r�r�rr3r�r9r;r8r8r8r9r�s~
�o] �


c 
3(& 
�1

?

	rcCsD	zt|d�r
t|d�}nt|�}|��WdSty!YdSw)Nr_)r�TF)r�rr�r)r�r�r8r8r9r�	s
�rc	Cs6ddl}d}|j|d�}|jdddddd	�|jd
d�}|jdd
ddd�|jdddddd�|jdddddd�|jddddd�|��}|jdur�|j}t|�r�t|d��}|��t	|��t
jd�Wd�n1sowY|jr�t	d �
|��dSdS|�d!d"�
|��dS|jdur�|j}t|�r�t�|d#��}|j|jd$�Wd�dS1s�wYdS|�d!d"�
|��dS|jdu�r9t|j�d!kr�|jd}tj}nt|j�d%kr�|j\}}n|�d!|���t|��r.t�|d#��}|j|d&�Wd�n	1�swY|j�r,|d'k�r d(�
|�}	nd)�
||�}	t	|	�dSdS|�d!d"�
|��dS|jdu�r�|j�d�}
tj�|
�\}}d*d*d+d+d,d,d,d,d-�}
||
v�rcd.|
|nd/}|j}t�|
|��}|D]}|�|��qqWd�n	1�s�wY|j�r�t	d0�
|
��dSdSdS)1Nrz3A simple command-line interface for tarfile module.)�descriptionz-vz	--verbose�
store_trueFzVerbose output)�action�default�helpT)�requiredz-lz--list�	<tarfile>zShow listing of a tarfile)�metavarr@z-ez	--extract�+)rBz<output_dir>zExtract tarfile into target dir)�nargsrCr@z-cz--create)z<name>z<file>zCreate tarfile from sourcesz-tz--testzTest if a tarfile is validr}r4z{!r} is a tar archive.r#z{!r} is not a tar archive.
r�)r�r$)r%r�z{!r} file is extracted.z+{!r} file is extracted into {!r} directory.r�r�r�)r�z.tgzz.xzz.txzz.bz2z.tbzz.tbz2z.tb2zw:r~z{!r} file created.)�argparse�ArgumentParser�add_argument�add_mutually_exclusive_group�
parse_args�testrrr�rnrlr6r�rT�exitrsrr�r2r��curdir�format_helprZcreate�popr%�splitextr�)rFr<�parserri�argsrar�ZtfrMr8Ztar_name�_�extZcompressionsZtar_modeZ	tar_files�	file_namer8r8r9�main�	s��
�
�
�
�
��
"�

�
���
���rV�__main__)]�version�
__author__�__credits__�builtinsrr�rlr�r�r\r�r�rWr$rgr�r�r��AttributeError�NotImplementedErrorr#r��	NameError�__all__r3r�r�rrrrr0rrJr�r�r3r4rr�ZCONTTYPEr!r rKr*r,rZr
rrrr^r~rOr{rnr'rIr|r�r�getfilesystemencodingr:r?rOrUrZr]ror+rr
rrr	rrvrwrxrLryr{r��objectr�r��BufferedReaderr�rrrrVrrr8r8r8r9�<module>s��������

shL.
W
�
© 2025 GrazzMean