OwlCyberSecurity - MANAGER
Edit File: tarfile.cpython-310.opt-2.pyc
o ����S�g�����������������������@���s��� �d�Z�dZdZddlmZ�ddlZddlZddlZddl Z ddl Z ddlZddlZddl Z ddlZddlZzddlZW�n�eyF���dZY�nw�zddlZW�n�eyX���dZY�nw�eefZzeef7�ZW�n �eym���Y�nw�g�d�ZdZdZed �Zd ZdZdZdZd 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,fZ4e!e"e)e,fZ5e*e+e,fZ6dZ7h�d�Z8e9e9e9e:e:e:d �Z;ej<d!kr�d"Z=ne�>��Z=d#d$��Z?d%d&��Z@d'd(��ZAd)e3fd*d+�ZBd,d-��ZCdedfd.d/�ZDd0d1��ZEG�d2d3��d3eF�ZGG�d4d5��d5eG�ZHG�d6d7��d7eG�ZIG�d8d9��d9eG�ZJG�d:d;��d;eG�ZKG�d<d=��d=eG�ZLG�d>d?��d?eL�ZMG�d@dA��dAeL�ZNG�dBdC��dCeL�ZOG�dDdE��dEeL�ZPG�dFdG��dGeL�ZQG�dHdI��dI�ZRG�dJdK��dK�ZSG�dLdM��dMeT�ZUG�dNdO��dOeT�ZVG�dPdQ��dQejW�ZXG�dRdS��dSeG�ZYG�dTdU��dUeY�ZZG�dVdW��dWeY�Z[G�dXdY��dYeY�Z\G�dZd[��d[eY�Z]G�d\d]��d]eY�Z^drd_d`�Z_dadb��Z`dcdd��Zadedf��Zbe`eaebdg�ZceT��Zde�edh�ZfG�didj��djeT�ZgG�dkdl��dleT�Zhdmdn��ZiehjZdodp��Zjekdqk�r�ej���dS�dS�)sz0.9.0u"���Lars Gustäbel (lars@gustaebel.de)u4���Gustavo 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�������s���ustar �s���ustar�00�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-8c�����������������C���s:��� �|�d�u�r t�d��|��||�}�|�d�|��|t|���t��S�)Nzmetadata cannot contain None)� ValueError�encode�len�NUL)�s�length�encoding�errors��r8����./opt/alt/python310/lib64/python3.10/tarfile.py�stn����s ���r:���c�����������������C���s,��� �|���d�}|dkr|�d�|��}�|��||�S�)Nr������)�find�decode)r4���r6���r7����pr8���r8���r9����nts����s ��� r?���c�����������������C���s���� �|�d�dv�r3d}t�t|��d��D�]}|dK�}||�|d��7�}q|�d�dkr1dt|��d��|��}|S�zt|�dd�}�t|����p@d d�}W�|S��tyP���td ��w�)Nr���)��������r#�������rA��������ascii�strict�0�invalid header)�ranger2���r?����int�stripr0����InvalidHeaderError)r4����n�ir8���r8���r9����nti����s ������rN���rB���c�����������������C���s���� �|�}t�|��}�d|���krd|d��k�r&n�ntd|d�|�f�d�t�}|S�|tkrnd|d���|���kr=d|d��k�rnn�td ��|�dkrLtdg�}ntdg�}d|�|��}�t|d��D�]}|�d|�d@���|�dL�}�q]|S�td ��) Nr���rB���r#���z%0*orD���rC���r@���rA���zoverflow in number field)rI����bytesr3���r���� bytearrayrH����insertr0���)rL����digits�formatZ original_nr4���rM���r8���r8���r9����itn����s"��� 0�� �rT���c�����������������C���s2��� �dt�t�d|����}dt�t�d|����}||fS�)NrC���Z 148B8x356BZ 148b8x356b)�sum�structZunpack_from)�bufZunsigned_chksumZ signed_chksumr8���r8���r9����calc_chksums����s���rX���c����������� ������C���s���� �|pd}|dkrd�S�|d�u�rt��|�||��d�S�t||�\}}t|�D�]}|��|�}t|�|k�r4|d��|�|��q#|dkrR|��|�}t|�|k�rM|d��|�|��d�S�)Ni�@��r����unexpected end of data)�shutil�copyfileobj�divmodrH����readr2����write) �srcZdstr5���� exception�bufsize�blocks� remainder�brW���r8���r8���r9���r[�������s&��� r[���c�����������������C���s8���t�tjdd��}|d�ur|��|d��|�}�t|�dd��d�S�)Nr6����backslashreplace� )�end)�getattr�sys�stdoutr1���r=����print)r4���r6���r8���r8���r9����_safe_print��s���rl���c�������������������@�������e�Zd�Z �dS�)r���N��__name__� __module__�__qualname__r8���r8���r8���r9���r����������r���c�������������������@���rm���)r ���Nrn���r8���r8���r8���r9���r �����rr���r ���c�������������������@���rm���)r���Nrn���r8���r8���r8���r9���r�����rr���r���c�������������������@���rm���)r���Nrn���r8���r8���r8���r9���r�����rr���r���c�������������������@���rm���)r ���Nrn���r8���r8���r8���r9���r �����rr���r ���c�������������������@���rm���)r���Nrn���r8���r8���r8���r9���r�����rr���r���c�������������������@���rm���)�EmptyHeaderErrorNrn���r8���r8���r8���r9���rs���!��rr���rs���c�������������������@���rm���)�TruncatedHeaderErrorNrn���r8���r8���r8���r9���rt���$��rr���rt���c�������������������@���rm���)�EOFHeaderErrorNrn���r8���r8���r8���r9���ru���'��rr���ru���c�������������������@���rm���)rK���Nrn���r8���r8���r8���r9���rK���*��rr���rK���c�������������������@���rm���)�SubsequentHeaderErrorNrn���r8���r8���r8���r9���rv���-��rr���rv���c�������������������@����.���e�Zd�Z �dd��Zdd��Zdd��Zdd��Zd S�) � _LowLevelFilec�����������������C���sF���t�jt�jt�jB�t�jB�d�|�}tt�d�r|t�jO�}t��||d�|�_d�S�)N��r�w�O_BINARYi���) �os�O_RDONLY�O_WRONLY�O_CREAT�O_TRUNC�hasattrr|���r����fd)�self�name�moder8���r8���r9����__init__:��s����� z_LowLevelFile.__init__c�����������������C���s���t��|�j��d�S��N)r}����closer�����r����r8���r8���r9���r����C��s���z_LowLevelFile.closec�����������������C���s���t��|�j|�S�r����)r}���r]���r�����r����r'���r8���r8���r9���r]���F������z_LowLevelFile.readc�����������������C���s���t��|�j|��d�S�r����)r}���r^���r�����r����r4���r8���r8���r9���r^���I��s���z_LowLevelFile.writeN)ro���rp���rq���r����r����r]���r^���r8���r8���r8���r9���rx���4��s���� rx���c�������������������@���sp���e�Zd�Z �dd��Zdd��Zdd��Zdd��Zd d ��Zdd��Zd d��Z dd��Z ddd�Zdd��Zdd��Z dd��ZdS�)�_Streamc����������� ������C���s��� �d|�_�|d�u�rt||�}d|�_�|dkrt|�}|���}|pd|�_||�_||�_||�_||�_d|�_ d|�_ d|�_z�|dkrmzdd�l}W�n�t yM���td�d��w�||�_|�d�|�_|d krf|�����|j|�_W�d�S�|�����W�d�S�|d kr�zdd�l}W�n�t y����td�d��w�|d kr�d|�_|���|�_t|�_W�d�S�|���|�_W�d�S�|dkr�zdd�l}W�n�t y����td �d��w�|d kr�d|�_|���|�_|j|�_W�d�S�|���|�_W�d�S�|dkr�td|���W�d�S����|�j�s�|�j����d|�_��)NTF�*�������r����gzzzlib module is not availablerz����bz2�bz2 module is not available�xz�lzma module is not available�tar�unknown compression type %r) �_extfileobjrx����_StreamProxy�getcomptyper����r�����comptype�fileobjra���rW����pos�closed�zlib�ImportErrorr����crc32�crc� _init_read_gz�errorr`����_init_write_gzr�����dbufZBZ2Decompressor�cmp�OSErrorZ BZ2Compressor�lzmaZLZMADecompressor� LZMAErrorZLZMACompressorr����) r����r����r����r����r����ra���r����r����r����r8���r8���r9���r����W��sv��� � � � � z_Stream.__init__c�����������������C���s$���t�|�d�r|�js|�����d�S�d�S�d�S�)Nr����)r����r����r����r����r8���r8���r9����__del__���s����z_Stream.__del__c�����������������C���s���� �|�j��d|�j�j|�j�j�|�j�jd�|�_t�dtt � ����}|�� d|�d���|�j�d�r4|�jd�d��|�_t j�|�j�|�_|�� |�j�dd �t���d�S�) N� ���r����<Ls����s�����.gz���z iso-8859-1�replace)r����ZcompressobjZDEFLATED� MAX_WBITSZ DEF_MEM_LEVELr����rV����packrI����time�_Stream__writer�����endswithr}���r%����basenamer1���r3���)r����Z timestampr8���r8���r9���r�������s����z_Stream._init_write_gzc�����������������C���sT��� �|�j�dkr|�j�||�j�|�_|��jt|�7��_|�j�dkr#|�j�|�}|��|��d�S�)Nr����r����) r����r����r����r����r����r2���r�����compressr����r����r8���r8���r9���r^������s��� z _Stream.writec�����������������C���sb��� �|��j�|7��_�t|�j��|�jkr/|�j�|�j�d�|�j����|�j�|�jd���|�_�t|�j��|�jksd�S�d�S�r����)rW���r2���ra���r����r^���r����r8���r8���r9���Z__write���s����z_Stream.__writec�����������������C���s���� �|�j�rd�S�d|�_�zP|�jdkr|�jdkr|��j|�j���7��_|�jdkrM|�jrM|�j�|�j��d|�_|�jdkrM|�j�t� d|�j ���|�j�t� d|�jd@����W�|�jsX|�j� ���d�S�d�S�|�jsc|�j� ���w�w�)NTr{���r����r����r����r����l������)r����r����r����rW���r�����flushr����r^���rV���r����r����r����r����r����r����r8���r8���r9���r�������s&��� � ��z _Stream.closec�����������������C���s���� �|�j��|�j�j��|�_d|�_|��d�dkrtd��|��d�dkr$td��t|��d��}|��d��|d @�rIt|��d��d t|��d����}|�� |��|d@�r[ �|��d�}|rY|t krZnqN|d @�rm �|��d�}|rk|t krlnq`|d@�rx|��d��d�S�d�S�)Nr����r$���s�����not a gzip filer#�������zunsupported compression method��������rC���rB���T����)r����Z decompressobjr����r����r����� _Stream__readr���r����ordr]���r3���)r�����flagZxlenr4���r8���r8���r9���r�������s6��� � ��z_Stream._init_read_gzc�����������������C������� �|�j�S�r����)r����r����r8���r8���r9����tell�������z_Stream.tellr���c�����������������C���sX��� �||�j��dkr(t||�j��|�j�\}}t|�D�]}|��|�j��q|��|��|�j�S�td��)Nr���z seeking backwards is not allowed)r����r\���ra���rH���r]���r ���)r����r����rb���rc���rM���r8���r8���r9����seek���s��� �z_Stream.seekc�����������������C���s"��� �|���|�}|��jt|�7��_|S�r����)�_readr����r2���)r����r'���rW���r8���r8���r9���r]�����s��� z_Stream.readc�������������� ���C���s���� �|�j�dkr|��|�S�t|�j�}|�jg}||k�rV|�jr"|�j}d|�_n |�j�|�j�}|s,n*z|�j� |�}W�n�|�j yF�}�ztd�|�d�}~ww�|�|��|t|�7�}||k�sd� |�}||d���|�_|d�|��S�)Nr����r����zinvalid compressed data)r����r����r2���r����rW���r����r]���ra���r����� decompressr`���r����append�join)r����r'����c�trW����er8���r8���r9���r������s0��� �� � z _Stream._readc�����������������C���sr��� �t�|�j�}|�jg}||k�r'|�j�|�j�}|sn|�|��|t�|�7�}||k�sd�|�}||d���|�_|d�|��S�)Nr����)r2���rW���r����r]���ra���r����r����)r����r'���r����r����rW���r8���r8���r9���Z__read-��s��� � z_Stream.__readN)r���)ro���rp���rq���r����r����r����r^���r����r����r����r����r����r]���r����r����r8���r8���r8���r9���r����L��s���� F r����c�������������������@���rw���) r����c�����������������C���s���||�_�|�j��t�|�_d�S�r����)r����r]���� BLOCKSIZErW���)r����r����r8���r8���r9���r����C��s���z_StreamProxy.__init__c�����������������C���s���|�j�j|�_|�jS�r����)r����r]���rW���r����r8���r8���r9���r]���G��s��� z_StreamProxy.readc�����������������C���sL���|�j��d�rdS�|�j�dd��dkr|�j�dd��dkrd S�|�j��d �r$dS�dS�) Ns����r����r�������s���BZhr����� ���s���1AY&SYr����)s���]���s����7zXZr����r����)rW���� startswithr����r8���r8���r9���r����K��s���$z_StreamProxy.getcomptypec�����������������C���s���|�j�����d�S�r����)r����r����r����r8���r8���r9���r����U��r����z_StreamProxy.closeN)ro���rp���rq���r����r]���r����r����r8���r8���r8���r9���r����>��s���� r����c�������������������@���sh���e�Zd�Z �ddd�Zdd��Zdd��Zdd ��Zd d��Zdd ��Ze j fdd�Zddd�Zdd��Z dd��ZdS�)�_FileInFileNc�����������������C���s����||�_�||�_||�_d|�_t|dd��|�_d|�_|d�u�rd|fg}d|�_g�|�_d}|�j}|D�]&\}}||kr>|�j� d||d�f��|�j� d|||�|f��||7�}||�}q,||�jk�re|�j� d||�jd�f��d�S�d�S�)Nr���r����FT) r�����offsetr'����positionrh���r����r����� map_index�mapr����)r����r����r����r'���Z blockinfoZlastposZrealposr8���r8���r9���r����b��s*��� �z_FileInFile.__init__c�����������������C���s���d�S�r����r8���r����r8���r8���r9���r����{������z_FileInFile.flushc�����������������C�������dS��NTr8���r����r8���r8���r9����readable~��r����z_FileInFile.readablec�����������������C���r�����NFr8���r����r8���r8���r9����writable���r����z_FileInFile.writablec�����������������C���s ���|�j����S�r����)r�����seekabler����r8���r8���r9���r����������� z_FileInFile.seekablec�����������������C���r����r����)r����r����r8���r8���r9���r�������r����z_FileInFile.tellc�����������������C���s���� �|t�jkrtt|d�|�j�|�_|�jS�|t�jkr5|dk�r(t|�j|�d�|�_|�jS�t|�j|�|�j�|�_|�jS�|t�jkrJtt|�j|�|�j�d�|�_|�jS�td��)Nr���zInvalid argument) �io�SEEK_SET�min�maxr'���r�����SEEK_CUR�SEEK_ENDr0���)r����r�����whencer8���r8���r9���r�������s��� �� ��z_FileInFile.seekc����������� ������C���s�� �|d�u�r|�j�|�j�}n t||�j�|�j��}d}|dkr� �|�j|�j�\}}}}||�j��kr1|k�r4n�nn|��jd7��_|�jt|�j�krFd|�_qt|||�j��}|rq|�j�||�j|����|�j�|�}t|�|krlt d��||7�}n|t |�7�}||8�}|��j|7��_|dks|S�)Nr����r���Tr#���rY���)r'���r����r����r����r����r2���r����r����r]���r���r3���) r����r'���rW����data�start�stopr����r5���rd���r8���r8���r9���r]������s4���� �z_FileInFile.readc�����������������C���s&���|���t|��}||d�t|��<�t|�S�r����)r]���r2���)r����rd���rW���r8���r8���r9����readinto���s���z_FileInFile.readintoc�����������������C���s ���d|�_�d�S�r����)r����r����r8���r8���r9���r�������r����z_FileInFile.closer����)ro���rp���rq���r����r����r����r����r����r����r����r����r����r]���r����r����r8���r8���r8���r9���r����\��s���� r����c���������������������������e�Zd�Z��fdd�Z���ZS�)�ExFileObjectc��������������������s&���t�|j|j|j|j�}t���|��d�S�r����)r����r�����offset_datar'����sparse�superr����)r�����tarfile�tarinfor������ __class__r8���r9���r�������s��� �zExFileObject.__init__�ro���rp���rq���r����� __classcell__r8���r8���r����r9���r�������s����r����c�������������������@���s���e�Zd�ZdS�)�FilterErrorNrn���r8���r8���r8���r9���r�������s����r����c�����������������������r����)�AbsolutePathErrorc��������������������s ���||�_�t���d|j�d���d�S�)Nzmember z has an absolute path�r����r����r����r�����r����r����r����r8���r9���r�������s���zAbsolutePathError.__init__r����r8���r8���r����r9���r������������r����c�����������������������r����)�OutsideDestinationErrorc���������������������.���||�_�||�_t���|j�d|�d�d���d�S�)Nz would be extracted to �, � which is outside the destination�r�����_pathr����r����r�����r����r����r%���r����r8���r9���r�������� ��� �z OutsideDestinationError.__init__r����r8���r8���r����r9���r�������r����r����c�����������������������r����)�SpecialFileErrorc������������������������||�_�t���|j�d���d�S�)Nz is a special filer����r����r����r8���r9���r�����������zSpecialFileError.__init__r����r8���r8���r����r9���r�����r����r��c�����������������������r����)�AbsoluteLinkErrorc��������������������r��)Nz is a link to an absolute pathr����r����r����r8���r9���r�������r��zAbsoluteLinkError.__init__r����r8���r8���r����r9���r�����r����r��c�����������������������r����)�LinkOutsideDestinationErrorc��������������������r����)Nz would link to r����r����r����r����r����r8���r9���r�������r���z$LinkOutsideDestinationError.__init__r����r8���r8���r����r9���r�����r����r��Tc�����������������C���s���i�}|�j�}tj�|�}|�dtjf�r |�j�dtj���}|d<�tj�|�r*t|���tj�tj� ||��}tj� ||g�|krDt|�|��|�j}|d�ur~|d@�}|ru|�� ��sY|����rf|d@�sa|dM�}|dO�}n|����sn|����rqd�}nt|���||�jkr~||d<�|r�|�jd�ur�d�|d<�|�jd�ur�d�|d <�|�jd�ur�d�|d <�|�jd�ur�d�|d<�|����s�|����r�tj�|�j�r�t|���|����r�tj� |tj�|�|�j�}ntj� ||�j�}tj�|�}tj� ||g�|kr�t|�|��|S�)N�/r����i����@���i�������r����r)���r*���r+���r,���)r����r}���r%����realpathr�����sep�lstrip�isabsr����r����� commonpathr����r�����isreg�islnk�isdir�issymr��r)���r*���r+���r,����linknamer���dirnamer��)�member� dest_pathZfor_data� new_attrsr����Ztarget_pathr����r8���r8���r9����_get_filtered_attrs���s^��� �� r��c�����������������C���s���|�S�r����r8���)r��r��r8���r8���r9����fully_trusted_filter0��r����r��c�����������������C���s,���t�|�|d�}|r|�jdi�|�ddi��S�|�S�)NF�deepr8����r��r�����r��r��r��r8���r8���r9���� tar_filter3������r��c�����������������C���s,���t�|�|d�}|r|�jdi�|�ddi��S�|�S�)NTr��Fr8���r��r��r8���r8���r9����data_filter9��r��r��)Z fully_trustedr����r����s���([0-9]{1,20}) c�������������������@���s*��e�Zd�Z �ed{i�dd�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$��Zd|d(d)�Zed*d+���Zejd,d+���Zed-d.���Z e jd/d.���Z d0d1��Z eeeeeeeed2ed3� d4d5�Zd6d7��Z eed8fd9d:�Zd;d<��Zd=d>��Zd?d@��ZedAdB���ZdCdD��ZedEdF���ZedGdH���ZedIdJ���ZedKdL���ZedMdN���ZedOdP���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��Z0dwdx��Z1dydz��Z2d$S�)}r���r����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.r��zcName 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����c�����������������C���sl��� �||�_�d|�_d|�_d|�_d|�_d|�_d|�_t|�_d|�_ d|�_ d|�_d|�_d|�_ d|�_d|�_d�|�_i�|�_d�S�)Ni���r���r����)r����r����r)���r*���r'���r(���r���REGTYPEr ��r��r+���r,���r!��r"��r����r����r����r#���r����r����r8���r8���r9���r����r��s$��� zTarInfo.__init__c�����������������C���r����r�����r����r����r8���r8���r9���r%����������zTarInfo.pathc�����������������C���� ���||�_�d�S�r����r(��r'��r8���r8���r9���r%���������� c�����������������C���r����r�����r��r����r8���r8���r9���r&������r)��zTarInfo.linkpathc�����������������C���r*��r����r,��)r����r��r8���r8���r9���r&������r+��c�����������������C���s���d|�j�j|�jt|��f�S�)Nz<%s %r at %#x>)r����ro���r�����idr����r8���r8���r9����__repr__���s���zTarInfo.__repr__T) r����r(���r����r��r)���r*���r+���r,���r���_KEEPc������� ���������C���s���� �| r t��|��}nt���|��}|| ur||_|| ur||_|| ur#||_|| ur*||_|| ur1||_|| ur8||_|| ur?||_|| urF||_ |S�r����) �copyZdeepcopyr����r(���r����r��r)���r*���r+���r,���)r����r����r(���r����r��r)���r*���r+���r,���r��r/���resultr8���r8���r9���r�������s*��� zTarInfo.replacec�����������������C���s���� �|�j�d�u�r d�}n|�j�d@�}|�j||�j|�j|�j|�j|�j|�j|�j|�j |�j |�j|�jd� }|d�t kr?|d��d�s?|d��d7��<�|S�)N���) r����r����r)���r*���r'���r(���r��r ��r��r+���r,���r!��r"��r ��r����r��)r����r����r)���r*���r'���r(���r��r ��r��r+���r,���r!��r"���DIRTYPEr����)r����r�����infor8���r8���r9����get_info���s*��� �zTarInfo.get_info�surrogateescapec�����������������C���sx��� �|�����}|���D�]\}}|d�u�rtd|���q |tkr#|��|||�S�|tkr.|��|||�S�|tkr8|��||�S�td��)Nz%s may not be Nonezinvalid format) r5���itemsr0���r ����create_ustar_headerr����create_gnu_headerr����create_pax_header)r����rS���r6���r7���r4��r�����valuer8���r8���r9����tobuf���s����z TarInfo.tobufc�����������������C���sp��� �t�|d<�t|d��||��tkrtd��t|d��||��tkr0|��|d�||�\|d<�|d<�|��|t||�S�)N�magicr��zlinkname is too longr�����prefix) �POSIX_MAGICr2���r1����LENGTH_LINKr0����LENGTH_NAME�_posix_split_name�_create_headerr ���)r����r4��r6���r7���r8���r8���r9���r8�����s���zTarInfo.create_ustar_headerc�����������������C���s���� �t�|d<�d}t|d��||��tkr||��|d�t||�7�}t|d��||��tkr7||��|d�t||�7�}||��|t ||��S�)Nr=��r����r��r����) � GNU_MAGICr2���r1���r@���_create_gnu_long_header�GNUTYPE_LONGLINKrA���GNUTYPE_LONGNAMErC��r���)r����r4��r6���r7���rW���r8���r8���r9���r9�����s���zTarInfo.create_gnu_headerc����������� ��� ���C���sF�� �t�|d<�|�j���}ddtfddtfddfD�]2\}}}||v�r qz ||��dd ��W�n�ty9���||�||<�Y�qw�t||��|krH||�||<�qd D�]A\}}d}||�} t| t �} | r`t | �n| }d|��krpd |d��k�sxn�d||<�d}n| r�|||<�d}|r�||vr�t| �||<�qK|r�|��|t |�}nd}||��|tdd��S�)Nr=��r����r%���r��r&���)r+���r+���� ���)r,���r,���rH��rD���rE���))r)���rB���)r*���rB���)r'�������)r(���rI��Fr���rB���r#���Tr����r����)r?��r#��r0��rA��r@��r1����UnicodeEncodeErrorr2���� isinstance�float�round�str�_create_pax_generic_header�XHDTYPErC��r ���) r����r4��r6���r#��r����Zhnamer5���rR���Z needs_pax�valZval_is_floatZval_intrW���r8���r8���r9���r:����sF��� ��� �zTarInfo.create_pax_headerc�����������������C���s��� �|���|td�S�)Nr/���)rO���XGLTYPE)�clsr#��r8���r8���r9����create_pax_global_header=��s���z TarInfo.create_pax_global_headerc�����������������C���s~��� �|��d�}tdt|��D�]-}d�|d�|���}d�||d����}t|�||��tkr:t|�||��tkr:�||fS�q td��)Nr��r#���zname is too long)�splitrH���r2���r����r1���� LENGTH_PREFIXrA��r0���)r����r����r6���r7���Z componentsrM���r>��r8���r8���r9���rB��C��s��� ��zTarInfo._posix_split_namec�����������������C���s��� �|���d�ttfv�}|r!t|���dd�d|�}t|���dd�d|�}ntdd||�}tdd||�}|���dt�}|d�u�r=td��t|���dd�d ||�t|���d d�d@�d|�t|���dd�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�} | d�d��t d| �d��| dd����} | S�)Nr ��r!��r���rB���r"��r����zTarInfo.type must not be Noner����r���r����r2��r)���r*���r'���rI��r(���s��� r��r=��r+���rH��r,���r>��r���z%dsr����i����z%06o�rD���i����)�get�CHRTYPE�BLKTYPErT���r:���r&��r0���r?��rV���r����r����r����rX���rO���)r4��rS���r6���r7���Zhas_device_fieldsr!��r"��Zfiletype�partsrW���r��r8���r8���r9���rC��S��s<��� �&zTarInfo._create_headerc�����������������C���s0��� �t�t|��t�\}}|dkr|�t|�t�7�}�|�S�)Nr���)r\���r2���r����r3���)Zpayloadrb���rc���r8���r8���r9����_create_payload}��s ���zTarInfo._create_payloadc�����������������C���sT��� �|��||�t�}i�}d|d<�||d<�t|�|d<�t|d<�|��|t||�|��|��S�)Nz ././@LongLinkr����r ��r'���r=��)r1���r3���r2���rD��rC��r ���r[��)rS��r����r ��r6���r7���r4��r8���r8���r9���rE�����s����zTarInfo._create_gnu_long_headerc�������������� ���C���s.�� �d}|����D�]\}}z|�dd��W�q�ty���d}Y��nw�d}|r(|d7�}|����D�]I\}}|�d�}|r>|�|d�}n|�d�}t|�t|��d�}d �} } �|tt| ���} | | kr_n| } qR|tt| �d �d�|�d�|�d �7�}q,i�}d|d<�||d<�t|�|d<�t|d<�|��|td d�|�� |��S�)NFr/���rE���Tr����s���21 hdrcharset=BINARY r6��r����r���rD������� ����=���� z././@PaxHeaderr����r ��r'���r=��r����) r7��r1���rJ��r2���rN��rO���r?��rC��r ���r[��)rS��r#��r ��r6���Zbinary�keywordr;��Zrecords�lrL���r>���r4��r8���r8���r9���rO�����sD���� �(�z"TarInfo._create_pax_generic_headerc�������������� ���C���sh�� �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|dd���|_||_|dd ��|_t |d d��||�|_t |dd��||�|_t |dd��||�|_t|dd���|_t|dd���|_t |dd��||�}|jtkr�|j�d�r�t|_|jtk�rd}g�}td�D�]0} zt|||d����} t||d�|d����}W�n �ty����Y��n w�|�| |f��|d7�}q�t|d��}t|dd���} ||| f|_ |�!���r!|j�"d�|_|�r2|jt#v�r2|d�|j�|_|S�)Nr���zempty headerztruncated headerzend of file header��������zbad checksumr����l����t����|�����������i��i ��i)��iI��iQ��iY��i���r��i���r����rI������i���i���i���)$r2���rs���r����rt����countr3���ru���rN���rX���rK���r?���r����r����r)���r*���r'���r(���r��r ��r��r+���r,���r!��r"���AREGTYPEr����r3���GNUTYPE_SPARSErH���r0���r�����boolr$��r���rstrip� GNU_TYPES)rS��rW���r6���r7���r���objr>��r�����structsrM���r�����numbytes� isextended�origsizer8���r8���r9����frombuf���s^���� zTarInfo.frombufc�����������������C���s:��� �|j��t�}|��||j|j�}|j����t�|_|�|�S�r����) r����r]���r����rt��r6���r7���r����r�����_proc_member)rS��r����rW���ro��r8���r8���r9����fromtarfile ��s ��� zTarInfo.fromtarfilec�����������������C���sR��� �|�j�ttfv�r |��|�S�|�j�tkr|��|�S�|�j�tttfv�r$|�� |�S�|�� |�S�r����)r ��rG��rF��� _proc_gnulongrk���_proc_sparserP��rR���SOLARIS_XHDTYPE� _proc_pax� _proc_builtin)r����r����r8���r8���r9���ru����s��� zTarInfo._proc_memberc�����������������C���sj��� �|j����|�_|�j}|����s|�jtvr||��|�j�7�}||_|�� |j |j|j��|�� ��r3|�j�d�|�_|�S��Nr��)r����r����r����r��r ���SUPPORTED_TYPES�_blockr'���r�����_apply_pax_infor#��r6���r7���r��r����rm��)r����r����r����r8���r8���r9���r{��,��s���zTarInfo._proc_builtinc�������������� ���C���s���� �|j��|��|�j��}z|��|�}W�n�ty%�}�ztt|��d��d�}~ww�|�j|_|�j t kr9t||j|j �|_n|�j tkrGt||j|j �|_|���rR|j�d�|_|S�r|��)r����r]���r~��r'���rv��r���rv���rN��r����r ��rG��r?���r6���r7���r����rF��r��r���removesuffix)r����r����rW����nextr����r8���r8���r9���rw��B��s ����� zTarInfo._proc_gnulongc����������� ��� ���C���s���� �|�j�\}}}|�`�|rT|j�t�}d}td�D�]4}zt|||d����}t||d�|d����} W�n �ty;���Y��nw�|rG| rG|�|| f��|d7�}qt|d��}|s||�_ |j� ��|�_|�j|��|�j ��|_||�_ |�S�)Nr�������rI��rh��i���)r$��r����r]���r����rH���rN���r0���r����rl��r����r����r����r~��r'���r����) r����r����rp��rr��rs��rW���r����rM���r����rq��r8���r8���r9���rx��]��s.���� � zTarInfo._proc_sparsec�������������� ���C���s��� �|j��|��|�j��}|�jtkr|j}n|j���}d}d�}g�}t|�|kr�||�dkr�t � ||��}s7td��z t|� d��}W�n�tyK���td��w�|dk�rTtd��||�t|�kr`td��|�d�|�d�} ||�d�d�| ��} | �d�\}}} |r�|dks�|| �dkr�td��|�||| f��|dkr�|d�u�r�| dkr�|j}nd }||7�}t|�|kr�||�dks+|d�u�r�d }|D�]*\}}} |��|d d |j�}|tv�r�|��| ||j|j�}n |��| d d |j�}|||<�q�z|��|�}W�n�t�y�}�ztt|��d��d�}~ww�d |v��r|��||��n#d|v��r|��||��n|�d�d k�r4|�d�dk�r4|��|||��|�jtt fv��rg|�!||j|j��|�j"|_"d|v��rg|j#}|�$���s\|jt%v�rd||�|j�7�}||_"|S�)Nr���rG���r#�������r]��r����s ���hdrcharsets���BINARYr/����GNU.sparse.map�GNU.sparse.sizezGNU.sparse.major�1zGNU.sparse.minorrF���r'���)&r����r]���r~��r'���r ��rR��r#��r0��r2����_header_length_prefix_re�matchrK���rI����groupr0���r����rg���� partitionr����r6����_decode_pax_fieldr7����PAX_NAME_FIELDSrv��r���rv���rN���_proc_gnusparse_01�_proc_gnusparse_00rW���_proc_gnusparse_10rP��ry��r��r����r����r��r}��)r����r����rW���r#��r����r6����raw_headersr���r5���Zheader_value_end_offsetZkeyword_and_valueZraw_keywordZequalsZ raw_valuer_��r;��r���r����r����r8���r8���r9���rz��y��s���� ��) �� � �� zTarInfo._proc_paxc�������������� ���C���s���� �g�}g�}|D�];\}}}|dkr'z|��t|������W�q�ty&���td��w�|dkrBz|��t|������W�q�tyA���td��w�qtt||��|_d�S�)Ns���GNU.sparse.offsetrG���s���GNU.sparse.numbytes)r����rI���r=���r0���rK����list�zipr����)r����r���r���Zoffsetsrq���_r_��r;��r8���r8���r9���r������s$������zTarInfo._proc_gnusparse_00c�����������������C���sB��� �dd��|d���d�D��}tt|d�d�d��|dd�d����|_d�S�)Nc�����������������S���s���g�|�]}t�|��qS�r8���)rI���)�.0�xr8���r8���r9���� <listcomp> ��s����z.TarInfo._proc_gnusparse_01.<locals>.<listcomp>r����,r$���r#���)rU��r���r���r����)r����r���r#��r����r8���r8���r9���r�����s���(zTarInfo._proc_gnusparse_01c�����������������C���s���� �d�}g�}|j��t�}|�dd�\}}t|�}t|�|d�k�rBd|vr+||j��t�7�}|�dd�\}}|�t|���t|�|d�k�s|j����|_t t |d�d�d��|dd�d����|_d�S�)Nr^��r#���r$���)r����r]���r����rU��rI���r2���r����r����r����r���r���r����)r����r���r#��r����Zfieldsr����rW���Znumberr8���r8���r9���r�����s����(zTarInfo._proc_gnusparse_10c�������������� ���C���s���� �|����D�]T\}}|dkrt|�d|��q|dkr!t|�dt|���q|dkr.t|�dt|���q|tv�rY|tv�rJzt|�|�}W�n�tyI���d}Y�nw�|dkrS|�d�}t|�||��q|���|�_d�S�)NzGNU.sparse.namer%���r���r'���zGNU.sparse.realsizer���r��) r7���setattrrI���� PAX_FIELDS�PAX_NUMBER_FIELDSr0���rm��r0��r#��)r����r#��r6���r7���r_��r;��r8���r8���r9���r����s(���� �zTarInfo._apply_pax_infoc�����������������C���s0��� �z|��|d�W�S��ty���|��||��Y�S�w�)NrE���)r=����UnicodeDecodeError)r����r;��r6���Zfallback_encodingZfallback_errorsr8���r8���r9���r���3��s����zTarInfo._decode_pax_fieldc�����������������C���s$��� �t�|t�\}}|r|d7�}|t�S�)Nr#���)r\���r����)r����ri��rb���rc���r8���r8���r9���r~��;��s ���zTarInfo._blockc�����������������C���s��� �|�j�tv�S�r����)r ��� REGULAR_TYPESr����r8���r8���r9���r��D������ z TarInfo.isregc�����������������C���s ��� �|�����S�r����)r��r����r8���r8���r9����isfileH��s���zTarInfo.isfilec�����������������C������� �|�j�tkS�r����)r ��r3��r����r8���r8���r9���r��L��r���z TarInfo.isdirc�����������������C���r���r����)r ���SYMTYPEr����r8���r8���r9���r��P��r���z TarInfo.issymc�����������������C���r���r����)r ���LNKTYPEr����r8���r8���r9���r��T��r���z TarInfo.islnkc�����������������C���r���r����)r ��rX��r����r8���r8���r9����ischrX��r���z TarInfo.ischrc�����������������C���r���r����)r ��rY��r����r8���r8���r9����isblk\��r���z TarInfo.isblkc�����������������C���r���r����)r ���FIFOTYPEr����r8���r8���r9����isfifo`��r���zTarInfo.isfifoc�����������������C���s ���|�j�d�uS�r����)r����r����r8���r8���r9����issparsed��r����zTarInfo.issparsec�����������������C���s��� �|�j�tttfv�S�r����)r ��rX��rY��r���r����r8���r8���r9����isdevg��s���z TarInfo.isdevr8���)r����)3ro���rp���rq����dict� __slots__r�����propertyr%����setterr&���r.��r/��r����r5��r���r���r<��r8��r9��r:���classmethodrT��rB���staticmethodrC��r[��rE��rO��rt��rv��ru��r{��rw��rx��rz��r���r���r���r��r���r~��r��r���r��r��r��r���r���r���r���r���r8���r8���r8���r9���r���O��s�������������� ����������� � : ) 2 > y r���c�������������������@���s���e�Zd�Z �dZdZdZdZeZe Z dZeZ eZdZ dedd�Zedddefd d ��Zedfdd��Zedgdd��Zedgdd��Zedhdd��Zddddd�Zdd��Zdd��Zdd��Zdd ��Zdid!d"�Zdjdd$�d%d&�Zdkdd'�d(d)�Z dld*d+�Z!d,d-��Z"dmddd/�d0d1�Z#dnddd/�d3d4�Z$d5d6��Z%d7d8��Z&d9d:��Z'd;d<��Z(d=d>��Z) # dod?d@�Z*dAdB��Z+dCdD��Z,dEdF��Z-dGdH��Z.dIdJ��Z/dKdL��Z0dMdN��Z1dOdP��Z2dQdR��Z3dSdT��Z4dpdUdV�Z5dWdX��Z6dldYdZ�Z7d[d\��Z8d]d^��Z9d_d`��Z:dadb��Z;dcdd��Z<dS�)qr���r���Fr#���Nrz���r6��c�������������� ���C���s��� �ddddd�}||vrt�d��||�_||�|�_|s5|�jdkr+tj�|�s+d|�_d|�_t||�j�}d |�_n |d�u�rIt|d �rIt |j ttf�rI|j }t|d�rR|j|�_d|�_|r]tj� |�nd�|�_ ||�_|d�urj||�_|d�urq||�_|d�urx||�_|d�ur||�_|d�ur�||�_| |�_| d�ur�|�jtkr�| |�_ni�|�_|d�ur�||�_|d�ur�||�_| |�_d |�_g�|�_d |�_|�j���|�_i�|�_z||�jd kr�d�|�_ |��!��|�_ |�jdk�r �|�j�"|�j��z|�j�#|��}|�j�$|��W�n#�t%y����|�j�"|�j��Y�n�t&�y �}�zt't|��d��d�}~ww�q�|�jdv��r3d|�_|�j�r6|�j�(|�j�)���}|�j�*|��|��jt+|�7��_W�d�S�W�d�S�W�d�S����|�j�sE|�j�,���d|�_��)N�rbzr+b�wbZxb�rz����ar{���r����!mode must be 'r', 'a', 'w' or 'x'r���r{���Fr����r����Trz����r���r{���r���)-r0���r�����_moder}���r%����exists� bltn_openr����r����rK��r����rN��rO����abspathr����rS���r�����dereference�ignore_zerosr6���r7���r���r#���debug� errorlevel�copybufsizer�����members�_loadedr����r�����inodes�firstmemberr���r����rv��r����ru���r���r���rT��r0��r^���r2���r����)r����r����r����r����rS���r����r���r���r6���r7���r#��r���r���r���Zmodesr����rW���r8���r8���r9���r�������s���� � ���� zTarFile.__init__c��������������������s��� �|s |s t�d��|dv�rp��fdd�}g�}t��j|d�D�]G}t����j|��} |d�ur.|���} z | |d|fi�|��W���S��ttfyc�}�z|�d|��d|����|d�urY|�| ��W�Y�d�}~qd�}~ww�d � |�}td |�����d|v�r�|� dd�\} }| pd} |p�d }|��jv�r�t����j|��} ntd|���| || |fi�|��S�d|v�r�|� dd�\} }| p�d} |p�d }| dvr�t�d��t|| |||�}z��|| |fi�|��}W�n���|������d|_ |S�|dv�r��j|||fi�|��S�t�d��)Nznothing to open)rz����r:*c��������������������s�����j�|��dkS�)N�taropen)� OPEN_METH)r�����rS��r8���r9����not_compressed!��r����z$TarFile.open.<locals>.not_compressed)�keyrz���z - method z: � z'file could not be opened successfully: �:r#���r����r�����|ry���zmode must be 'r' or 'w'Fr���zundiscernible mode)r0����sortedr���rh���r����r���r���r����r����r����rU��r����r����r����r���)rS��r����r����r����ra����kwargsr���Z error_msgsr�����funcZ saved_posr����Zerror_msgs_summary�filemode�streamr����r8���r���r9���r������s\���# �� zTarFile.openc�����������������K���s&��� �|dvr t�d��|�|||fi�|��S�)Nr���r���)r0���)rS��r����r����r����r���r8���r8���r9���r���U��s���zTarFile.taropenr����c����������� ��� ���K���s���� �|dvr t�d��zddlm}�W�n�ty���td�d��w�z|||d�||�}W�n�tyC�}�z|d�ur>|dkr>td�|���d�}~ww�z |�j|||fi�|��}W�n!�tyk�}�z|����|dkrftd�|���d�}~w���|������d |_ |S�) N�rz���r{���r����mode must be 'r', 'w' or 'x'r���)�GzipFilezgzip module is not availablerd���rz���r����F) r0���Zgzipr���r����r���r����r���r���r����r����) rS��r����r����r����� compresslevelr���r���r����r����r8���r8���r9����gzopen]��s:��� � �� �zTarFile.gzopenc����������� ��� ���K���s���� �|dvr t�d��zddlm}�W�n�ty���td�d��w�||p"|||d�}z |�j|||fi�|��}W�n#�ttfyP�}�z|����|dkrKt d�|���d�}~w���|������d |_ |S�) Nr���r���r���)�BZ2Filer����)r���rz���znot a bzip2 fileF)r0���r����r���r����r���r���r�����EOFErrorr����r���r����) rS��r����r����r����r���r���r���r����r����r8���r8���r9����bz2open~��s,��� � �zTarFile.bz2openc����������� ��� ���K���s���� �|dvr t�d��z ddlm}m}�W�n�ty���td�d��w�||p$|||d�}z |�j|||fi�|��}W�n#�|tfyR�} �z|����|dkrMt d�| ���d�} ~ w���|������d |_ |S�) Nr���r���r���)�LZMAFiler����r����)�presetrz���znot an lzma fileF)r0���r����r���r����r����r���r���r���r����r���r����) rS��r����r����r����r���r���r���r����r����r����r8���r8���r9����xzopen���s,��� � �zTarFile.xzopenr���r���r���r���)r����r����r����r����c�����������������C���s���� �|�j�rd�S�d|�_�z;|�jdv�r8|�j�ttd����|��jtd�7��_t|�jt�\}}|dkr8|�j�tt|����W�|�j sC|�j� ���d�S�d�S�|�j sN|�j� ���w�w�)NTr���r$���r���)r����r����r����r^���r3���r����r����r\���� RECORDSIZEr����r����)r����rb���rc���r8���r8���r9���r�������s"��� � ��z TarFile.closec�����������������C���s*��� �|���|�d��}|d�u�rtd|���|S�)Nr��zfilename %r not found)� _getmemberrm���KeyError)r����r����r����r8���r8���r9���� getmember���s ���zTarFile.getmemberc�����������������C���s��� �|������|�js|�����|�jS�r����)�_checkr����_loadr���r����r8���r8���r9���� getmembers���s ���zTarFile.getmembersc�����������������C���s��� �dd��|�����D��S�)Nc�����������������S���s���g�|�]}|j��qS�r8���r(��)r���r����r8���r8���r9���r������s����z$TarFile.getnames.<locals>.<listcomp>)r���r����r8���r8���r9����getnames���s���zTarFile.getnamesc�����������������C���sL�� �|���d��|d�ur |j}|d�u�r|}tj�|�\}}|�tjd�}|�d�}|����}|�|_ |d�u�rA|�j s;t�|�}n t�|�}nt� |����}d}|j}t�|�r�|j|jf} |�j st|jdkrt| |�jv�rt||�j| �krtt} |�j| �}n;t} | d�r||�j| <�n/t�|�r�t} n't�|�r�t} nt�|�r�t} t�|�}nt�|�r�t} n t� |�r�t!} nd�S�||_||_"|j#|_$|j%|_&| tkr�|j'|_(nd|_(|j)|_*| |_+||_,t-r�zt-�.|j$�d�|_/W�n �t0y����Y�nw�t1�rzt1�2|j&�d�|_3W�n �t0�y���Y�nw�| tt!fv��r$t4td��r$t4td��r$t�5|j6�|_7t�8|j6�|_9|S�)N�awxr��r����r#���r����major�minor):r���r����r}���r%���� splitdriver����r ��r��r����r����r����lstat�stat�fstat�fileno�st_mode�S_ISREG�st_ino�st_dev�st_nlinkr���r���r&���S_ISDIRr3���S_ISFIFOr����S_ISLNKr����readlink�S_ISCHRrX���S_ISBLKrY��r�����st_uidr)����st_gidr*����st_sizer'����st_mtimer(���r ��r���pwd�getpwuidr+���r����grpZgetgrgidr,���r����r����st_rdevr!��r���r"��)r����r�����arcnamer����Zdrvr����Zstatresr��Zstmd�inoder ��r8���r8���r9���� gettarinfo���s���� � ��zTarFile.gettarinfoT)r���c����������������C���s$�� �|������|d�u�r|�}|D�]�}|rg|jd�u�rtd��ntt�|j���td|jp*|j|jp/|jf���|� ��s;|� ��rHtdd|j|jf����ntd|j ���|jd�u�rYtd��ntdt�|j�d�d�����t|j|���rpd nd ���|r�|���r�td|j���|���r�td|j���t���q d�S�) Nz ??????????z%s/%sz%10sz%d,%dz%10dz????-??-?? ??:??:??z%d-%02d-%02d %02d:%02d:%02dr����r��r����z-> zlink to )r���r����rl���r���r���r+���r)���r,���r*���r���r���r!��r"��r'���r(���r����� localtimer����r��r��r��r��rk���)r�����verboser���r����r8���r8���r9���r���T��s<��� �� ��zTarFile.list��filterc����������������C���sR�� �|���d��|d�u�r|}|�jd�ur$tj�|�|�jkr$|��dd|���d�S�|��d|��|��||�}|d�u�r>|��dd|���d�S�|d�urT||�}|d�u�rT|��dd|���d�S�|���rvt|d��}|�� ||��W�d�����d�S�1�sow���Y��d�S�|� ��r�|�� |��|r�tt�|��D�]}|�j tj�||�tj�||�||d��q�d�S�d�S�|�� |��d�S�) Nr���r$���ztarfile: Skipped %rr#���ztarfile: Unsupported type %r�tarfile: Excluded %rr���r��)r���r����r}���r%���r����_dbgr���r��r����addfiler��r����listdir�addr����)r����r����r���� recursiver��r�����fr8���r8���r9���r��z��s>��� "� ��zTarFile.addc�����������������C���s���� �|���d��t�|�}|�|�j|�j|�j�}|�j�|��|��jt |�7��_|�j }|d�urXt||�j|j|d��t |jt�\}}|dkrO|�j�tt|����|d7�}|��j|t�7��_|�j�|��d�S�)Nr���)ra���r���r#���)r���r0��r<��rS���r6���r7���r����r^���r����r2���r���r[���r'���r\���r����r3���r���r����)r����r����r����rW���ra���rb���rc���r8���r8���r9���r�����s��� zTarFile.addfilec�����������������C���sh���|d�u�r|�j�}|d�u�r tS�t|t�rtd��|S�t|�r|S�zt|�W�S��ty3���td|�d��d��w�)NzrString names are not supported for TarFile.extraction_filter. Use a function such as tarfile.data_filter directly.zfilter z not found) �extraction_filterr��rK��rN��� TypeError�callable�_NAMED_FILTERSr���r0���)r����r��r8���r8���r9����_get_filter_function���s ��� � �zTarFile._get_filter_function�.)� numeric_ownerr��c����������������C���s���� �g�}|���|�}|d�u�r|�}|D�]#}|��|||�}|d�u�rq|���r'|�|��|�j|||����|d��q|jdd��dd��|D�]7}tj�||j �} z|�j || |d��|��|| ��|��|| ��W�q?�t yv�} �z|��| ��W�Y�d�} ~ q?d�} ~ ww�d�S�)N�� set_attrsr��c�����������������S���s���|�j�S�r����r(��)r���r8���r8���r9����<lambda>���s����z$TarFile.extractall.<locals>.<lambda>T)r����reverse)r��)r���_get_extract_tarinfor��r�����_extract_one�sortr}���r%���r����r�����chown�utime�chmodr ����_handle_nonfatal_error)r����r%���r���r��r��Zdirectories�filter_functionr��r�����dirpathr����r8���r8���r9���� extractall���s4��� ����zTarFile.extractallr����c����������������C���s:��� �|���|�}|��|||�}|d�ur|��||||��d�S�d�S�r����)r��r��r��)r����r��r%���r��r��r��r��r����r8���r8���r9����extract ��s��� �zTarFile.extractc�������������� ���C���s���� �t�|t�r|��|�}n|}|}z|||�}W�n/�ttfy0�}�z|��|��W�Y�d�}~nd�}~w�tyF�}�z|��|��W�Y�d�}~nd�}~ww�|d�u�rV|��dd|j ���d�S�|� ��rht�|�}tj �||j�|_|S�)Nr$���r��)rK��rN��r���r����r�����_handle_fatal_errorr ���r��r��r����r��r0��r}���r%���r����r��r%��)r����r��r��r%���r����Z unfilteredr����r8���r8���r9���r�� ��s*��� ��� zTarFile._get_extract_tarinfoc�������������� ���C���s���� �|���d��z|�j|tj�||j�||d��W�d�S��ty0�}�z|��|��W�Y�d�}~d�S�d�}~w�tyG�}�z|�� |��W�Y�d�}~d�S�d�}~ww�)Nrz���r��) r����_extract_memberr}���r%���r����r����r����r!��r ���r��)r����r����r%���r��r��r����r8���r8���r9���r��/ ��s��� ����zTarFile._extract_onec�����������������C���s"��� �|�j�dkr��|��dd|���d�S�)Nr#����tarfile: %s)r���r���r����r����r8���r8���r9���r��< ��s��� zTarFile._handle_nonfatal_errorc�����������������C���sr��� �|�j�dkr��t|t�r*|jd�u�r|��dd|j���d�S�|��dd|j|jf���d�S�|��ddt|�j|f���d�S�)Nr���r#���r#��ztarfile: %s %rztarfile: %s %s)r���rK��r�����filenamer���strerrorr ��ro���r$��r8���r8���r9���r!��C ��s��� zTarFile._handle_fatal_errorc�����������������C���s|��� �|���d��t|t�r|��|�}n|}|���s|jtvr"|��|�|�S�|���s*|� ��r<t|�j t�r4td��|�� |��|��S�d�S�)Nrz���z'cannot extract (sym)link as file object)r���rK��rN��r���r��r ��r}��� fileobjectr��r��r����r����r ����extractfile�_find_link_target)r����r��r����r8���r8���r9���r(��O ��s��� zTarFile.extractfilec�����������������C���sX�� �|��d�}|�dtj�}tj�|�}|r tj�|�s t�|��|���s(|� ��r5|�� dd|j|jf���n|�� d|j��|� ��rG|��||��nF|���rR|��||��n;|���r]|��||��n0|���se|���rl|��||��n!|���st|� ��r{|��||��n|jtvr�|��||��n|��||��|r�|��|||��|� ��s�|��||��|��||��d�S�d�S�d�S�)Nr��r#���z%s -> %s)rm��r����r}���r ��r%���r��r����makedirsr��r��r��r����r��r���makefiler���makedirr����makefifor���r����makedev�makelinkr ��r}���makeunknownr��r��r��)r����r����� targetpathr��r��Z upperdirsr8���r8���r9���r"��o ��s:��� �zTarFile._extract_memberc�����������������C���sD��� �z|j�d�u�rt�|��W�d�S�t�|d��W�d�S��ty!���Y�d�S�w�)Ni���)r����r}����mkdir�FileExistsError�r����r����r1��r8���r8���r9���r,��� ��s��� �zTarFile.makedirc�����������������C���s���� �|�j�}|�|j��|�j}t|d��?}|jd�ur8|jD�]\}}|�|��t|||t|��q|�|j��|� ���nt|||jt|��W�d�����d�S�W�d�����d�S�1�sTw���Y��d�S�)Nr���) r����r����r����r���r���r����r[���r���r'����truncate)r����r����r1���sourcera����targetr����r'���r8���r8���r9���r+��� ��s��� �"�zTarFile.makefilec�����������������C���s$��� �|���||��|��dd|j���d�S�)Nr#���z9tarfile: Unknown file type %r, extracted as regular file.)r+��r��r ��r4��r8���r8���r9���r0��� ��s ��� �zTarFile.makeunknownc�����������������C���s"��� �t�td�r t�|��d�S�td��)N�mkfifozfifo not supported by system)r����r}���r8��r ���r4��r8���r8���r9���r-��� ��s��� zTarFile.makefifoc�����������������C���sl��� �t�td�rt�td�std��|j}|d�u�rd}|���r"|tjO�}n|tjO�}t�||t� |j |j���d�S�)N�mknodr.��z'special devices not supported by systemr��)r����r}���r ���r����r���r����S_IFBLK�S_IFCHRr9��r.��r!��r"��)r����r����r1��r����r8���r8���r9���r.��� ��s��� �zTarFile.makedevc�����������������C���s���� �z6|����rtj�|�rt�|��t�|j|��W�d�S�tj�|j�r,t� |j|��W�d�S�|�� |��|�|��W�d�S��tyX���z |�� |��|�|��W�Y�d�S��t yW���td�d��w�w�)Nz%unable to resolve link inside archive)r��r}���r%����lexists�unlink�symlinkr��r���r%���linkr"��r)���symlink_exceptionr���r ���r4��r8���r8���r9���r/��� ��s(��� �� ��zTarFile.makelinkc�������������� ���C���s �� �t�td�r�t���dkr�|j}|j}|sFztr"|jr"t�|j�d�}W�n �ty,���Y�nw�zt r;|j r;t �|j �d�}W�n �tyE���Y�nw�|d�u�rLd}|d�u�rRd}z|���rft�td�rft� |||��W�d�S�t�|||��W�d�S��ty��}�ztd�|�d�}~ww�d�S�d�S�)N�geteuidr���r$���r;����lchownzcould not change owner)r����r}���rA��r*���r)���r���r,���Zgetgrnamr���r���r+����getpwnamr��rB��r��r����r ���)r����r����r1��r���g�ur����r8���r8���r9���r��� ��s@��� �� �� ���z TarFile.chownc�������������� ���C���sH��� �|j�d�u�rd�S�z t�||j���W�d�S��ty#�}�ztd�|�d�}~ww�)Nzcould not change mode)r����r}���r��r����r ���)r����r����r1��r����r8���r8���r9���r�� ��s��� ��z TarFile.chmodc�������������� ���C���s\��� �|j�}|d�u�r d�S�ttd�sd�S�zt�|||f��W�d�S��ty-�}�ztd�|�d�}~ww�)Nr��z"could not change modification time)r(���r����r}���r��r����r ���)r����r����r1��r(���r����r8���r8���r9���r��$ ��s��� ��z TarFile.utimec�����������������C���s<�� �|���d��|�jd�ur|�j}d�|�_|S�|�j|�j���kr.|�j�|�jd���|�j�d�s.td��d�} �z|�j� |��}W�n��t yf�}�z!|�jr\|��dd|�j|f���|��jt 7��_W�Y�d�}~q0W�Y�d�}~n�d�}~w�ty��}�z-|�jr�|��dd|�j|f���|��jt 7��_W�Y�d�}~q0|�jdkr�tt|��d��W�Y�d�}~nqd�}~w�ty����|�jdkr�td�d��Y�n[�ty��}�z|�jdkr�tt|��d��W�Y�d�}~nBd�}~w�ty��}�ztt|��d��d�}~w�t�y �}�zzdd�l}t||j�r�td |����d��|��t�y���|�w�d�}~ww� �|d�u�r|�j�|��|S�d|�_|S�) NZrar#���rY���Tr$���z0x%X: %sr���z empty filezzlib error: )r���r���r����r����r����r����r]���r���r����rv��ru���r���r��r����rK���rN��rs���rt���rv���� Exceptionr����rK��r����r����r���r����r���)r�����mr����r����r����r8���r8���r9���r���2 ��sv��� �� �� � ������ �zTarFile.nextc����������� ������C���s���� �|�����}d}|d�ur$z|�|�}W�n�ty���d}Y�nw�|d�|��}|r,tj�|�}t|�D�]"}|r=|j|jkr<d}q0|rGtj�|j�}n|j}||krR|��S�q0|rYt|��d�S�)NFT) r����indexr0���r}���r%����normpath�reversedr����r����) r����r����r����� normalizer���ZskippingrH��r���member_namer8���r8���r9���r���q ��s4������zTarFile._getmemberc�����������������C���s"��� � �|�����}|d�u�rnqd|�_d�S�r����)r���r���r����r8���r8���r9���r���� ��s���� z TarFile._loadc�����������������C���s@��� �|�j�rtd|�jj���|d�ur|�j|vrtd|�j���d�S�d�S�)Nz%s is closedzbad operation for mode %r)r����r����r����ro���r����)r����r����r8���r8���r9���r���� ��s����zTarFile._checkc�����������������C���sb��� �|����rd�td�tj�|j�|jf��}d�}n|j}|}|�j||dd�}|d�u�r/t d|���|S�)Nr��T)r����rK��zlinkname %r not found) r��r����r��r}���r%���r��r����r��r���r���)r����r����r���limitr��r8���r8���r9���r)��� ��s��� zTarFile._find_link_targetc�����������������c���s������ �|�j�r |�jE�d�H��d�S�d}|�jd�ur|����}|d7�}|V�� �|t|�j�k�r-|�j|�}n|�j�s<|����}|s;d|�_�d�S�nd�S�|d7�}|V��q )Nr���r#���T)r���r���r���r���r2���)r����rH��r����r8���r8���r9����__iter__� ��s.���� ��zTarFile.__iter__c�����������������C���s"��� �||�j�krt|tjd��d�S�d�S�)N��file)r���rk���ri����stderr)r�����level�msgr8���r8���r9���r��� ��s��� �zTarFile._dbgc�����������������C���s���|������|�S�r����)r���r����r8���r8���r9���� __enter__� ��s���zTarFile.__enter__c�����������������C���s.���|d�u�r |������d�S�|�js|�j�����d|�_d�S�r����)r����r����r����r����)r����r ��r;��� tracebackr8���r8���r9����__exit__� ��s ��� zTarFile.__exit__) Nrz���NNNNNNr6��NNNN)rz���N)rz���Nr����)rz���NN)NNN�Tr����r����)r��N)r����T)TFr����)=ro���rp���rq���r���r���r���r���r���rS���r���r6���r7���r���r����r����r'��r��r����r���r���r���r���r���r���r���r���r����r���r���r���r���r���r��r��r��r��r ��r��r��r��r!��r(��r"��r,��r+��r0��r-��r.��r/��r��r��r��r���r���r���r���r)��rN��r��rT��rV��r8���r8���r8���r9���r���l��s����� �o] � c& 3�-� �1! ?( r���c�����������������C���sD��� �zt�|�d�r t|�d�}nt|��}|����W�dS��ty!���Y�dS�w�)Nr]���)r����TF)r����r���r����r���)r����r����r8���r8���r9���r���� ��s��� �r���c��������������� ���C���sh��dd�l�}�d}|�j|d�}|jdddddd ��|jd dtdd ��|jdd�}|jddddd��|jdddddd��|jdddddd��|jdd dd!d��|���}|jr]|jd�u�r]|�d"d#��|j d�ur�|j }t |�r�t|d$��}|����t |���tjd%��W�d�����n1�s�w���Y��|jr�t d&�|���d�S�d�S�|�d"d'�|���d�S�|jd�ur�|j}t |�r�t�|d(��}|j|jd)��W�d�����d�S�1�s�w���Y��d�S�|�d"d'�|���d�S�|jd�u�rRt|j�d"kr�|jd�}tj}nt|j�d*kr�|j\}}n|�d"|�����t |��rGt�|d(��}|j||jd+��W�d�����n 1��s%w���Y��|j�rE|d,k�r9d-�|�} nd.�||�} t | ��d�S�d�S�|�d"d'�|���d�S�|jd�u�r�|j�d�} tj�| �\}}d/d/d0d0d1d1d1d1d2�} || v��r|d3| |��nd4}|j}t�| |��}|D�]}|�|���q�W�d�����n 1��s�w���Y��|j�r�t d5�| ���d�S�d�S�d�S�)6Nr���z3A simple command-line interface for tarfile module.)�descriptionz-vz --verbose� store_trueFzVerbose output)�action�default�helpz--filterz<filtername>zFilter for extraction)�metavar�choicesr\��T)Zrequiredz-lz--list� <tarfile>zShow listing of a tarfile)r]��r\��z-ez --extract�+)r_��z<output_dir>zExtract tarfile into target dir)�nargsr]��r\��z-cz--create)z<name>z<file>zCreate tarfile from sourcesz-tz--testzTest if a tarfile is validr#���z&--filter is only valid for extraction rz���rO��z{!r} is a tar archive.z{!r} is not a tar archive. r���)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_argumentr��Zadd_mutually_exclusive_group� parse_argsr��r ���exit�testr���r���r���rk���ri���rQ��r��rS���r���r���r2���r}����curdirZformat_helpr��Zcreate�popr%����splitextr��)rb��rX���parserr����argsr_���r����Ztfrh��rS��Ztar_namer���ZextZcompressionsZtar_modeZ tar_files� file_namer8���r8���r9����main ��s������ � � � � �� "� � ��� ���rn���__main__rW��)l�version� __author__�__credits__�builtinsr���r���ri���r}���r����rZ���r���r����rV���r0���re�warningsr���r����r����AttributeError�NotImplementedErrorr@��r����� NameError�__all__r3���r����r���rD��r?��rA��r@��rV��r&��rj��r���r���rX��rY��r3��r���ZCONTTYPErG��rF��rk��rP��rR��ry��r ���r���r���r���r}��r���rn��r���r���rL��rI���r���r����r����getfilesystemencodingr:���r?���rN���rT���rX���r[���rl���rF��r���r ���r���r���r ���r���rs���rt���ru���rK���rv���rx���r�����objectr����r�����BufferedReaderr����r����r����r����r��r��r��r��r��r��r��r��r/���compiler���r���r���r���rn��ro���r8���r8���r8���r9����<module>���s$����� ���� �sh ?� ������#��������� _ �