a XC?h±ã @sdZdZdZddlmZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZz ddlZWneyŠdZYn0z ddlZWney®dZYn0eefZzeef7ZWneyØYn0gd¢ZdZdZed Zd Zd Zd 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¡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ƒZKGdd?„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„ZlemdskrþelƒdS)uz0.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-8cCs8|durtdƒ‚| ||¡}|d|…|t|ƒtS)Nzmetadata cannot contain None)Ú ValueErrorÚencodeÚlenÚNUL)ÚsÚlengthÚencodingÚerrors©r8ú,/opt/alt/python39/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ÚstructZ unpack_from)ÚbufZunsigned_chksumZ signed_chksumr8r8r9Ú calc_chksumsás rXc 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) ÚsrcZdstr5Ú exceptionÚbufsizeÚblocksÚ remainderÚbrWr8r8r9r[îs$       r[cCs8ttjddƒ}|dur(| |d¡ |¡}t|dddS)Nr6Úbackslashreplaceú )Úend)ÚgetattrÚsysÚstdoutr1r=Úprint)r4r6r8r8r9Ú _safe_printsrlc@s eZdZdS)rN©Ú__name__Ú __module__Ú __qualname__r8r8r8r9rsrc@s eZdZdS)r Nrmr8r8r8r9r sr c@s eZdZdS)rNrmr8r8r8r9rsrc@s eZdZdS)rNrmr8r8r8r9rsrc@s eZdZdS)r Nrmr8r8r8r9r sr c@s eZdZdS)r Nrmr8r8r8r9r sr c@s eZdZdS)ÚEmptyHeaderErrorNrmr8r8r8r9rq srqc@s eZdZdS)ÚTruncatedHeaderErrorNrmr8r8r8r9rr#srrc@s eZdZdS)ÚEOFHeaderErrorNrmr8r8r8r9rs&srsc@s eZdZdS)rKNrmr8r8r8r9rK)srKc@s eZdZdS)ÚSubsequentHeaderErrorNrmr8r8r8r9rt,srtc@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ÚhasattrryrÚfd)ÚselfÚnameÚmoder8r8r9Ú__init__9sþý  z_LowLevelFile.__init__cCst |j¡dS©N)rzÚcloser€©rr8r8r9r†Bsz_LowLevelFile.closecCst |j|¡Sr…)rzr]r€©rr'r8r8r9r]Esz_LowLevelFile.readcCst |j|¡dSr…)rzr^r€©rr4r8r8r9r^Hsz_LowLevelFile.writeN)rnrorpr„r†r]r^r8r8r8r9ru3s ruc@sneZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z ddd„Z dd„Z dd„Z dd„ZdS)Ú_Streamc CsÞd|_|durt||ƒ}d|_|dkr6t|ƒ}| ¡}|pd|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'Úpositionrhr‚r›Ú map_indexÚmaprÂ)rr™rÌr'Z blockinfoZlastposZrealposr8r8r9r„as(    z_FileInFile.__init__cCsdSr…r8r‡r8r8r9rµzsz_FileInFile.flushcCsdS©NTr8r‡r8r8r9Úreadable}sz_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)rrÍÚwhencer8r8r9r¿‹s   z_FileInFile.seekc Cs |dur|j|j}nt||j|jƒ}d}|dkr|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)Nrrr#rY) r'rÍrÖrÏrÎr2r™r¿r]rr3) rr'rWÚdataÚstartÚstoprÌr5rdr8r8r9r]›s,     z_FileInFile.readcCs&| t|ƒ¡}||dt|ƒ…<t|ƒSr…)r]r2)rrdrWr8r8r9Úreadintoºsz_FileInFile.readintocCs d|_dSrÐ)r›r‡r8r8r9r†¿sz_FileInFile.close)N)N)rnrorpr„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__©rnrorpr„Ú __classcell__r8r8rår9rßÃsrßc@s eZdZdS)Ú FilterErrorNrmr8r8r8r9réÐsrécseZdZ‡fdd„Z‡ZS)ÚAbsolutePathErrorcs ||_tƒ d|j›d¡dS)Nzmember z has an absolute path©rärâr„r‚©rrärår8r9r„ÔszAbsolutePathError.__init__rçr8r8rår9rêÓsrêcseZdZ‡fdd„Z‡ZS)ÚOutsideDestinationErrorcs.||_||_tƒ |j›d|›dd¡dS)Nz would be extracted to ú, ú which is outside the destination©räÚ_pathrâr„r‚©rrä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|›dd¡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›dd|›d¡dS)Nzlink z would be extracted as a zcopy of z, which was rejectedrðròrår8r9r„ñs  ÿzLinkFallbackError.__init__rçr8r8rår9röðsröTcCs"i}|j}tjj|tjjd}| dtjf¡rH|j dtj¡}|d<tj |¡r\t |ƒ‚tjjtj  ||¡tjjd}tj  ||g¡|kr˜t ||ƒ‚|j }|dur|d@}|rü| ¡sÄ| ¡rÞ|d@sÔ|dM}|dO}n| ¡sî| ¡rôd}nt|ƒ‚||j kr||d<|r|jdur*d|d <|jdur>d|d <|jdurRd|d <|jdurfd|d <| ¡sz| ¡rtj |j¡r’t|ƒ‚tj |j¡}||jkr´||d <| ¡rÚtj  |tj |¡|j¡}ntj  ||j¡}tjj|tjjd}tj  ||g¡|krt||ƒ‚|S)N)rEú/r‚iíé@i¶ÿÿÿé€rƒr)r*r+r,Úlinkname)r‚rzr%ÚrealpathÚ ALLOW_MISSINGrÊÚsepÚlstripÚisabsrêrÃÚ commonpathrírƒÚisregÚislnkÚisdirÚissymrór)r*r+r,rúrôÚnormpathÚdirnamerõ)ÚmemberÚ dest_pathZfor_dataÚ new_attrsr‚Z target_pathrƒZ normalizedr8r8r9Ú_get_filtered_attrsüsl ÿ           þÿÿ r cCs|Sr…r8)rrr8r8r9Úfully_trusted_filter@sr cCs,t||dƒ}|r(|jfi|¤ddi¤ŽS|S)NFÚdeep©r r­©rrr r8r8r9Ú tar_filterCs rcCs,t||dƒ}|r(|jfi|¤ddi¤ŽS|S)NTr Fr rr8r8r9Ú data_filterIs r)Z fully_trustedr“rÛs([0-9]{1,20}) c@sÖeZdZeddddddddd d d d d ddddddddZdhdd„Zedd„ƒZejdd„ƒZedd„ƒZ e jdd„ƒZ dd„Z e e e e e e e e de d œ 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?„Zd@dA„ZdBdC„Z dDdE„Z!dFdG„Z"dHdI„Z#dJdK„Z$dLdM„Z%dNdO„Z&dPdQ„Z'dRdS„Z(dTdU„Z)dVdW„Z*dXdY„Z+dZd[„Z,d\d]„Z-d^d_„Z.d`da„Z/dbdc„Z0ddde„Z1dfdg„Z2dS)irzName 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.z Group 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Útyperúr+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ÚREGTYPErrúr+r,rrrÌràrár©rr‚r8r8r9r„‚s"zTarInfo.__init__cCs|jSr…©r‚r‡r8r8r9r%šsz TarInfo.pathcCs ||_dSr…rrr8r8r9r%ŸscCs|jSr…©rúr‡r8r8r9r&£szTarInfo.linkpathcCs ||_dSr…r)rrúr8r8r9r&¨scCsd|jj|jt|ƒfS)Nz<%s %r at %#x>)rærnr‚Úidr‡r8r8r9Ú__repr__¬szTarInfo.__repr__T) r‚r(rƒrúr)r*r+r,r Ú_KEEPc CsŽ| rt |¡} n t |¡} || ur(|| _|| ur6|| _|| urD|| _|| urR|| _|| ur`|| _|| urn|| _|| ur||| _|| urŠ|| _ | Sr…) ÚcopyZdeepcopyr‚r(rƒrúr)r*r+r,) rr‚r(rƒrúr)r*r+r,r rÚ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(rrrúr+r,rrrr‚r÷)rƒr‚r)r*r'r(rrrúr+r,rrÚDIRTYPEr²)rrƒÚ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) r$Úitemsr0r Úcreate_ustar_headerrÚcreate_gnu_headerrÚcreate_pax_header)rrSr6r7r#r‚Úvaluer8r8r9Útobufçs z TarInfo.tobufcCsnt|d<t|d ||¡ƒtkr(tdƒ‚t|d ||¡ƒtkr^| |d||¡\|d<|d<| |t||¡S)NÚmagicrúzlinkname is too longr‚Úprefix) Ú POSIX_MAGICr2r1Ú LENGTH_LINKr0Ú LENGTH_NAMEÚ_posix_split_nameÚ_create_headerr )rr#r6r7r8r8r9r'øs zTarInfo.create_ustar_headercCs€t|d<d}t|d ||¡ƒtkr<|| |dt||¡7}t|d ||¡ƒtkrl|| |dt||¡7}|| |t ||¡S)Nr,rrúr‚) Ú GNU_MAGICr2r1r/Ú_create_gnu_long_headerÚGNUTYPE_LONGLINKr0ÚGNUTYPE_LONGNAMEr2r)rr#r6r7rWr8r8r9r(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)Nr,r‚r%rúr&)r+r+é )r,r,r7rDrE))r)rB)r*rB)r'é )r(r8FrrBr#Trr­)r.rrr0r/r1ÚUnicodeEncodeErrorr2Ú isinstanceÚfloatÚroundÚstrÚ_create_pax_generic_headerÚXHDTYPEr2r ) rr#r6rr‚Zhnamer5rRZ needs_paxÚvalZ val_is_floatZval_intrWr8r8r9r)s> þ      zTarInfo.create_pax_headercCs| |td¡S)Nr/)r>ÚXGLTYPE)Úclsrr8r8r9Úcreate_pax_global_headerMsz TarInfo.create_pax_global_headercCs~| d¡}tdt|ƒƒD]T}d |d|…¡}d ||d…¡}t| ||¡ƒtkrt| ||¡ƒtkrqvqtdƒ‚||fS)Nr÷r#zname is too long)ÚsplitrHr2rÃr1Ú LENGTH_PREFIXr0r0)rr‚r6r7Z componentsrMr-r8r8r9r1Ss ÿzTarInfo._posix_split_namec Cs¦| 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'r8r(s rúr,r+r7r,r-rz%dsri”þÿÿz%06orDi›þÿÿ)ÚgetÚCHRTYPEÚBLKTYPErTr:rr0r.rVr¯rÇrÃrXrO) r#rSr6r7Zhas_device_fieldsrrZfiletypeÚpartsrWrr8r8r9r2cs:  ñ&zTarInfo._create_headercCs.tt|ƒtƒ\}}|dkr*|t|t7}|S)Nr)r\r2rÇr3)Zpayloadrbrcr8r8r9Ú_create_payloadszTarInfo._create_payloadcCsR| ||¡t}i}d|d<||d<t|ƒ|d<t|d<| |t||¡| |¡S)Nz ././@LongLinkr‚rr'r,)r1r3r2r3r2r rJ)rBr‚rr6r7r#r8r8r9r4—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/rETrs21 hdrcharset=BINARY r%rÈrrDó ó=ó z././@PaxHeaderr‚rr'r,r­) r&r1r9r2r=rOr.r2r rJ) rBrrr6ZbinaryÚkeywordr*ZrecordsÚlrLr>r#r8r8r9r>¨s<   ( ÿz"TarInfo._create_pax_generic_headerc Cstt|ƒdkrtdƒ‚t|ƒtkr(tdƒ‚| t¡tkr>tdƒ‚t|dd…ƒ}|t|ƒvrbt dƒ‚|ƒ}t |dd…||ƒ|_ t|dd …ƒ|_ t|d d …ƒ|_ t|d d …ƒ|_t|d d …ƒ|_t|d d…ƒ|_||_|dd …|_t |d d…||ƒ|_t |dd…||ƒ|_t |dd…||ƒ|_t|dd…ƒ|_t|dd…ƒ|_t |dd…||ƒ}|jtkr†|j  d¡r†t|_|jtkr6d}g}tdƒD]j} z0t|||d…ƒ} t||d|d…ƒ} WntyòYqYn0| | | f¡|d7}q¢t|dƒ} t|dd…ƒ} || | f|_ | !¡rN|j  "d¡|_ |rp|jt#vrp|d|j |_ |S)Nrz empty headerztruncated headerzend of file headeré”éœz bad checksumrélété|éˆéii i)iIiQiYiôr÷i‚r¹r8éiâiãiï)$r2rqrÇrrÚcountr3rsrNrXrKr?r‚rƒr)r*r'r(rrrúr+r,rrÚAREGTYPEr²r"ÚGNUTYPE_SPARSErHr0rÂÚboolrrÚrstripÚ GNU_TYPES)rBrWr6r7rÚobjr-ršÚstructsrMrÌÚnumbytesÚ isextendedÚorigsizer8r8r9ÚfrombufÛsZ         zTarInfo.frombufcCs8|j t¡}| ||j|j¡}|j ¡t|_| |¡Sr…) r™r]rÇrcr6r7r¾rÌÚ _proc_member)rBrãrWr^r8r8r9Ú fromtarfiles zTarInfo.fromtarfilecCsT|jttfvr| |¡S|jtkr,| |¡S|jtttfvrF|  |¡S|  |¡SdSr…) rr6r5Ú _proc_gnulongrZÚ _proc_sparser?rAÚSOLARIS_XHDTYPEÚ _proc_paxÚ _proc_builtin)rrãr8r8r9rd/s    zTarInfo._proc_membercCsR|j ¡|_|j}| ¡s$|jtvr4|| |j¡7}||_|  |j |j |j ¡|Sr…) r™r¾ràrrÚSUPPORTED_TYPESÚ_blockr'rÌÚ_apply_pax_inforr6r7)rrãrÌr8r8r9rj<s zTarInfo._proc_builtincCs„|j | |j¡¡}z| |¡}Wnty<tdƒ‚Yn0|j|_|jt krdt ||j |j ƒ|_ n|jtkr€t ||j |j ƒ|_|S)Nú missing or bad subsequent header)r™r]rlr'rer rtrÌrr6r?r6r7r‚r5rú)rrãrWÚnextr8r8r9rfMs   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ér8rWiø)rr™r]rÇrHrNr0rÂr[rár¾ràrlr'rÌ) rrãr_rarbrWršrMrÌr`r8r8r9rgcs(       zTarInfo._proc_sparsecCsÈ|j | |j¡¡}|jtkr&|j}n |j ¡}d}d}g}t|ƒ|krh||dkrht   ||¡}spt dƒ‚zt |  d¡ƒ}Wntyœt dƒ‚Yn0|dkr®t dƒ‚||t|ƒkrÆt dƒ‚| d¡|d} || d¡d| …} |  d¡\} } } | r| dks|| dkr$t dƒ‚| || | f¡| dkr^|dur^| dkrZ|j}nd }||7}q<|durvd }|D]X\}} } | | d d |j¡}|tvr¶| | ||j|j¡}n| | d d |j¡}|||<qzz| |¡}Wntyþtd ƒ‚Yn0d |vr| ||¡nFd |vr0| ||¡n.| d ¡dkr^| d¡dkr^| |||¡|jttfvrÄ|  ||j|j¡|j!|_!d|vrÄ|j"}| #¡s®|jt$vr¾|| |j¡7}||_!|S)NrrGr#érLrÉs hdrcharsetsBINARYr/rnúGNU.sparse.mapúGNU.sparse.sizezGNU.sparse.majorÚ1zGNU.sparse.minorrFr')%r™r]rlr'rrArrr2Ú_header_length_prefix_reÚmatchrKrIÚgroupr0rÜrgÚ partitionrÂr6Ú_decode_pax_fieldr7ÚPAX_NAME_FIELDSrer rtÚ_proc_gnusparse_01Ú_proc_gnusparse_00rFÚ_proc_gnusparse_10r?rhrmrÌràrrk)rrãrWrršr6Ú raw_headersrvr5Zheader_value_end_offsetZkeyword_and_valueZ raw_keywordZequalsZ raw_valuerNr*rorÌr8r8r9ris|        ÿ  ÿ ÿ     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á)rror~Zoffsetsr`Ú_rNr*r8r8r9r|øs  zTarInfo._proc_gnusparse_00cCs@dd„|d d¡Dƒ}tt|ddd…|ddd…ƒƒ|_dS)NcSsg|] }t|ƒ‘qSr8)rI)Ú.0Úxr8r8r9Ú rz.TarInfo._proc_gnusparse_01..rrú,r$r#)rDrr€rá)rrorrá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)NrMr#r$) r™r]rÇrDrIr2rÂr¾ràrr€rá)rrorrãÚfieldsrárWZnumberr8r8r9r}s  zTarInfo._proc_gnusparse_10c CsÀ| ¡D]¨\}}|dkr&t|d|ƒq|dkr@t|dt|ƒƒq|dkrZt|dt|ƒƒq|tvr|tvr’zt||ƒ}Wntyd}Yn0|dkr¤| d¡}t|||ƒq| ¡|_dS)NzGNU.sparse.namer%rsr'zGNU.sparse.realsizerr÷) r&ÚsetattrrIÚ PAX_FIELDSÚPAX_NUMBER_FIELDSr0r\rr)rrr6r7rNr*r8r8r9rm"s"   zTarInfo._apply_pax_infocCs2z| |d¡WSty,| ||¡YS0dS)NrE)r=ÚUnicodeDecodeError)rr*r6Zfallback_encodingZfallback_errorsr8r8r9ry9s zTarInfo._decode_pax_fieldcCs"t|tƒ\}}|r|d7}|tS)Nr#)r\rÇ)rrXrbrcr8r8r9rlAszTarInfo._blockcCs |jtvSr…)rÚ REGULAR_TYPESr‡r8r8r9rJsz TarInfo.isregcCs| ¡Sr…)rr‡r8r8r9ÚisfileNszTarInfo.isfilecCs |jtkSr…)rr"r‡r8r8r9rRsz TarInfo.isdircCs |jtkSr…)rÚSYMTYPEr‡r8r8r9rVsz TarInfo.issymcCs |jtkSr…)rÚLNKTYPEr‡r8r8r9rZsz TarInfo.islnkcCs |jtkSr…)rrGr‡r8r8r9Úischr^sz TarInfo.ischrcCs |jtkSr…)rrHr‡r8r8r9Úisblkbsz TarInfo.isblkcCs |jtkSr…)rÚFIFOTYPEr‡r8r8r9ÚisfifofszTarInfo.isfifocCs |jduSr…)rár‡r8r8r9ÚissparsejszTarInfo.issparsecCs|jtttfvSr…)rrGrHr‘r‡r8r8r9Úisdevmsz TarInfo.isdev)rŒ)3rnrorpÚdictÚ __slots__r„Úpropertyr%Úsetterr&rrr­r$rr r+r'r(r)Ú classmethodrCr1Ú staticmethodr2rJr4r>rcrerdrjrfrgrir|r{r}rmryrlrrŒrrrrrr’r“r”r8r8r8r9r_sšè     ý  :  )   2 >  y rc @súeZdZdZdZdZdZeZe Z dZ e Z eZdZdjdd„Zedddefd d „ƒZedkd d „ƒ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„ZdS)yrrFr#Nrwr%c Csªdddddœ}||vrtdƒ‚||_|||_|sh|jdkrTtj |¡sTd|_d|_t||jƒ}d |_n@|durt|d ƒrt |j t t fƒr|j }t|d ƒr¢|j|_d |_|r¸tj  |¡nd|_ ||_|durÒ||_|durà||_|durî||_|durü||_|dur ||_| |_| dur0|jtkr0| |_ni|_| durF| |_| durV| |_| |_d |_g|_d |_|j ¡|_i|_zþ|jd kržd|_ | !¡|_ |jdkr2|j "|j¡z|j #|¡}|j $|¡WnXt%yü|j "|j¡Yq2Yn2t&y,}zt't |ƒƒ‚WYd}~n d}~00qª|jdvr|d |_|jr||j (|j )¡¡}|j *|¡|jt+|ƒ7_Wn&|js˜|j ,¡d |_‚Yn0dS)NÚrbzr+bÚwbZxb©rwÚarxrƒú!mode must be 'r', 'a', 'w' or 'x'ržrxFr‚rƒTrw©ržrxrƒ)-r0rƒÚ_moderzr%ÚexistsÚ bltn_openr•rr:r‚r=rOÚabspathr™rSräÚ dereferenceÚ ignore_zerosr6r7rrÚdebugÚ errorlevelÚ copybufsizer›ÚmembersÚ_loadedr¾rÌÚinodesÚ firstmemberror¿rerÂrsr rrCrr^r2r†)rr‚rƒr™rSrär¥r¦r6r7rr§r¨r©ZmodesÚerWr8r8r9r„ŽsŠ   ÿ          &   zTarFile.__init__c sÈ|s|stdƒ‚|dvr¬‡fdd„}tˆj|dD]l}tˆˆj|ƒ}|durV| ¡} z||d|fi|¤ŽWSttfyœ|dur”| | ¡Yq2Yq20q2tdƒ‚nd|vr| dd ¡\} }| pÌd} |pÔd }|ˆjvròtˆˆj|ƒ}n td |ƒ‚||| |fi|¤ŽSd |vrœ| d d ¡\} }| p4d} |p>d }| d vrRtdƒ‚t || |||ƒ} zˆ|| | fi|¤Ž} Wn|   ¡‚Yn0d| _ | S|dvr¼ˆj |||fi|¤ŽStdƒ‚dS)Nznothing to open)rwúr:*csˆj|dkS)NÚtaropen)Ú OPEN_METH)r˜©rBr8r9Únot_compressed'sz$TarFile.open..not_compressed)Úkeyrwz%file could not be opened successfullyú:r#r“r”ú|rvzmode must be 'r' or 'w'Fr zundiscernible mode) r0Úsortedr±rhr¾rrr¿rDrŠr†r•r°) rBr‚rƒr™raÚkwargsr³r˜ÚfuncZ saved_posÚfilemodeÚstreamrÆr8r²r9rýsP%            z TarFile.opencKs$|dvrtdƒ‚||||fi|¤ŽS)NrrŸ)r0)rBr‚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©rwrxrƒúmode must be 'r', 'w' or 'x'r)ÚGzipFilezgzip module is not availablerdrwr¶F) r0Zgzipr¾rrr¥rr°r†r•)rBr‚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¿rwznot a bzip2 fileF) r0rrÁrrr°r¥ÚEOFErrorr†rr•)rBr‚rƒr™r¿r¸rÁrÆr8r8r9Úbz2opens& 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’)Úpresetrwznot an lzma fileF) r0r¦rÄr§rrr°rÂr†rr•) rBr‚rƒr™rÅr¸rÄr§rÆr8r8r9Úxzopens& zTarFile.xzopenr°rÀrÃrÆ)r“rŽrr‘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†)rrbrcr8r8r9r†Äs  ÿz TarFile.closecCs(| | d¡¡}|dur$td|ƒ‚|S)Nr÷zfilename %r not found)Ú _getmemberr\ÚKeyError)rr‚rär8r8r9Ú getmemberÙs zTarFile.getmembercCs| ¡|js| ¡|jSr…)Ú_checkr«Ú_loadrªr‡r8r8r9Ú getmembersäszTarFile.getmemberscCsdd„| ¡DƒS)NcSsg|] }|j‘qSr8r)r‚rär8r8r9r„òrz$TarFile.getnames..)rÍr‡r8r8r9ÚgetnamesîszTarFile.getnamesc CsZ| 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%|_&| tkr–|j'|_(nd|_(|j)|_*| |_+||_,t-râzt- .|j$¡d|_/Wnt0yàYn0t1rzt1 2|j&¡d|_3Wnt0yYn0| tt!fvrVt4tdƒrVt4tdƒrVt 5|j6¡|_7t 8|j6¡|_9|S)NÚawxr÷rŒr#rÚmajorÚminor):rËr‚rzr%Ú splitdriver­rýrþrä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_ISCHRrGÚS_ISBLKrHrƒÚst_uidr)Úst_gidr*Úst_sizer'Úst_mtimer(rrúÚpwdÚgetpwuidr+rÉÚgrpZgetgrgidr,rrÐÚst_rdevrrÑr) rr‚Úarcnamer™ZdrvräZstatresrúZstmdÚinoderr8r8r9Ú gettarinfoôs„      ÿ ÿ          zTarFile.gettarinfoT)rªcCs*| ¡|dur|}|D] }|rÎ|jdur6tdƒntt |j¡ƒtd|jpT|j|jp^|jfƒ|  ¡sv|  ¡rtdd|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¸r÷rŒz-> zlink to )rËrƒrlrÔrºr+r)r,r*rrrrr'r(r°Ú localtimer‚rrrúrrk)rÚverboserªrär8r8r9rWs8    ÿÿ  ÿ  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>|  |¡|rHt t  |¡ƒD],}|j tj ||¡tj ||¡||dqn |  |¡dS) NrÏr$ztarfile: Skipped %rr#ztarfile: Unsupported type %rútarfile: Excluded %rr›rï)rËr‚rzr%r¤Ú_dbgrìrr£Úaddfilerr·ÚlistdirÚaddrÃ)rr‚rêÚ recursiverðräÚfr8r8r9rõ}s6    ,  ÿ z TarFile.addcCs¾| d¡t |¡}| |j|j|j¡}|j |¡|jt |ƒ7_|j }|dur®t ||j|j |dt |j tƒ\}}|dkrœ|j tt|¡|d7}|j|t7_|j |¡dS)NrÏ)rarr#)rËrr+rSr6r7r™r^rÌr2r©r[r'r\rÇr3rªrÂ)rrär™rWrarbrcr8r8r9ró°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_filterr r:r=Ú TypeErrorÚcallableÚ_NAMED_FILTERSrÉr0)rrðr8r8r9Ú_get_filter_functionÉs ÿ  zTarFile._get_filter_functionÚ.)Ú numeric_ownerrðc Csºg}| |¡}|dur|}|D]L}| |||¡\}} |dur>q| ¡rP| | ¡|j||| ¡ ||dq|jdd„dd|D]0} zúz|| |ƒ}WnBtyÚ} z*| | t| ƒ¡WYd} ~ Wq‚WYd} ~ n d} ~ 00|durô| | d¡Wq‚t j   ||j ¡} zt   | ¡} Wn&ty8| |d¡YWq‚Yn0t | j¡sX| |d¡Wq‚|j|| |d | || ¡| || ¡Wq‚ty²} z| | ¡WYd} ~ q‚d} ~ 00q‚dS) N)Ú set_attrsrþÚfilter_functioncSs|jSr…r)ržr8r8r9Úþrz$TarFile.extractall..T)r´Úreversezexcluded by filterZmissingznot a directory)rþ)rüÚ_get_extract_tarinforrÂÚ _extract_oneÚsortÚ_FILTER_ERRORSÚ_log_no_directory_fixupÚreprrzr%rÃr‚rÓÚFileNotFoundErrorrÔrÜr×ÚchownÚutimeÚchmodr Ú_handle_nonfatal_error)rr%rªrþrðZ directoriesrrräÚ unfilteredÚexcÚdirpathrÓr®r8r8r9Ú extractallÛsV ÿ þ $ÿ    zTarFile.extractallcCs| dd|j|f¡dS)Nr$z(tarfile: Not fixing up directory %r (%s))ròr‚)rrÚreasonr8r8r9r sÿzTarFile._log_no_directory_fixuprŒc Cs8| |¡}| |||¡\}}|dur4| ||||¡dSr…)rürr) rrr%rÿrþrðrrärr8r8r9Úextract$ 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)r:r=rÊr¥réÚ_handle_fatal_errorr r ròr‚rrrzr%rÃrúr)rrrr%rÚfilteredr®r8r8r9r8 s"    zTarFile._get_extract_tarinfoc Cs| d¡z&|j|tj ||j¡||||dWnZty^}z| |¡WYd}~n6d}~0tyŠ}z|  |¡WYd}~n d}~00dS)Nrw)rÿrþrÚextraction_root) rËÚ_extract_memberrzr%rÃr‚r¥rr r )rrär%rÿrþrr®r8r8r9rV s ü zTarFile._extract_onecCs"|jdkr‚n| dd|¡dS)Nr#ú tarfile: %s)r¨rò©rr®r8r8r9r j s zTarFile._handle_nonfatal_errorcCsn|jdkr‚n\t|tƒrP|jdur6| dd|j¡qj| dd|j|jf¡n| ddt|ƒj|f¡dS)Nrr#rztarfile: %s %rztarfile: %s %s)r¨r:r¥ÚfilenameròÚstrerrorrrnrr8r8r9rq s   zTarFile._handle_fatal_errorcCs‚| d¡t|tƒr | |¡}n|}| ¡s6|jtvrB| ||¡S| ¡sR|  ¡rzt|j t ƒrht dƒ‚q~|  | |¡¡SndSdS)Nrwz'cannot extract (sym)link as file object)rËr:r=rÊrrrkÚ fileobjectrrr™rŠr Ú extractfileÚ_find_link_target)rrrär8r8r9r} s      zTarFile.extractfile©rrcCsZ| 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||||dn&|jtvr| ||¡n | ||¡|rV| |||¡|  ¡sV| ||¡| ||¡dS)Nr÷r#z%s -> %sr)r\r­rzrýr%rr¢Úmakedirsrrròr‚rúrÚmakefilerÚmakedirr’ÚmakefiforrÚmakedevÚmakelink_with_filterrrkÚ makeunknownr r r )rräÚ targetpathrÿrþrrZ upperdirsr8r8r9r s<   ý    zTarFile._extract_membercCs>z&|jdurt |¡n t |d¡Wnty8Yn0dS)NiÀ)rƒrzÚmkdirÚFileExistsError©rrä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)rrär'ÚsourceraÚtargetrÌr'r8r8r9r!ã s      zTarFile.makefilecCs"| ||¡| dd|j¡dS)Nr#z9tarfile: Unknown file type %r, extracted as regular file.)r!ròrr*r8r8r9r&ó s ÿzTarFile.makeunknowncCs"ttdƒrt |¡ntdƒ‚dS)NÚmkfifozfifo not supported by system)rrzr.r r*r8r8r9r#û 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ù) rrzr rƒrrÔÚS_IFBLKÚS_IFCHRr/r$rr)rrär'rƒr8r8r9r$ s  ÿzTarFile.makedevcCs| ||dd¡Sr…)r%r*r8r8r9Úmakelink 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´|}nT|durÄt dƒ‚z|||ƒ}Wn4ty}zt||jƒ|‚WYd}~n d}~00|dur$|j||||ddS)NFTz%unable to resolve link inside archivez[makelink_with_filter: if filter_function is not None, extraction_root must also not be Noner)rrzr%ÚlexistsÚunlinkÚsymlinkrúr¢rÚlinkÚsymlink_exceptionrrÉr rrör‚r) rrär'rrZkeyerror_to_extracterrorrrÚcauser8r8r9r% sF       ÿÿ$ þ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)rrzr9r*r)rèr,ZgetgrnamrÉrær+Úgetpwnamrr:r r¥r )rrär'rþÚgÚur8r8r9r J s0     z TarFile.chowncCs@|jdurdSzt ||j¡Wnty:tdƒ‚Yn0dS)Nzcould not change mode)rƒrzr r¥r r*r8r8r9r k s   z TarFile.chmodcCsT|j}|durdSttdƒs dSzt |||f¡WntyNtdƒ‚Yn0dS)Nr z"could not change modification time)r(rrzr r¥r )rrär'r(r8r8r9r u s  z TarFile.utimec Csl| d¡|jdur$|j}d|_|S|j|j ¡krZ|j |jd¡|j d¡sZtdƒ‚d}z|j  |¡}WqJt yÌ}zD|j r¶|  dd|j|f¡|jt 7_WYd}~q^WYd}~qJd}~0tyD}z`|j r|  dd|j|f¡|jt 7_WYd}~q^n|jdkr.tt|ƒƒ‚WYd}~qJd}~0tyj|jdkrftdƒ‚YnÚty¦}z$|jdkr’tt|ƒƒ‚WYd}~n¦d}~0tyÖ}ztt|ƒƒ‚WYd}~nvd}~0tyB}zTz.ddl}t||jƒrtd|›ƒ‚n|‚Wnty,|‚Yn0WYd}~n d}~00qJq^|durb|j |¡nd |_|S) NZrar#rYr$z0x%X: %srz empty filez zlib error: T)rËr­rÌr™r¾r¿r]rrärersr¦ròrÇrKr=rqrrrtÚ Exceptionrœr:r¡rrªrÂr«)rÚmrär®rœr8r8r9roƒ 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ÍÚindexr0rzr%rÚreversedrÌr‚) rr‚räÚ normalizerªZskippingr@rÚ member_namer8r8r9rÈ s,       zTarFile._getmembercCs| ¡}|durqqd|_dSrÐ)ror«rìr8r8r9rÌê sz TarFile._loadcCs:|jrtd|jjƒ‚|dur6|j|vr6td|jƒ‚dS)Nz %s is closedzbad operation for mode %r)r›r¥rærnrƒ)rrƒr8r8r9rËô szTarFile._checkcCs`| ¡r.d tdtj |j¡|jfƒ¡}d}n |j}|}|j||dd}|dur\t d|ƒ‚|S)Nr÷T)rärBzlinkname %r not found) rrÃrðrzr%rr‚rúrÈrÉ)rrärúÚlimitrr8r8r9rý 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­ror2)rr@rär8r8r9Ú__iter__ s$   zTarFile.__iter__cCs||jkrt|tjddS)N©Úfile)r§rkriÚstderr)rÚlevelÚmsgr8r8r9rò/ s z TarFile._dbgcCs | ¡|Sr…)rËr‡r8r8r9Ú __enter__5 szTarFile.__enter__cCs,|dur| ¡n|js"|j ¡d|_dSrÐ)r†r•r™r›)rrr*Ú tracebackr8r8r9Ú__exit__9 s   zTarFile.__exit__) NrwNNNNNNr%NNNN)rwN)rwNr©)rwNr©)rwNN)NNN)T)NT)N)rýN)rŒT)N)TF)NF)N)?rnrorpr§r¥r¦r¨rrSr r6r7rrärßrrør„r™rÇrr°rÀrÃrÆr±r†rÊrÍrÎrìrrõrórürrrrrr rrrr"r!r&r#r$r2r%r r r rorÈrÌrËrrEròrKrMr8r8r8r9rrsšý oZ    ü    c&3 ÿ Eÿ ÿ   ÿþ 82! ? ( rcCsFz,t|dƒrt|d}nt|ƒ}| ¡WdSty@YdS0dS)Nr])r™TF)rrr†r)r‚rÆr8r8r9rG s   rc Cs`ddl}d}|j|d}|jdddddd |jd d td d |jdd}|jddddd|jdddddd|jdddddd|jdd dd!d| ¡}|jrº|jdurº| d"d#¡|j durJ|j }t |ƒr4t |d$ƒ*}|  ¡t |  ¡tjd%Wdƒn1s0Y|jrFt d& |¡ƒn| d"d' |¡¡n|jdurº|j}t |ƒr¤t  |d(¡}|j|jd)Wdƒn1s˜0Yn| d"d' |¡¡n¢|jdur¤t|jƒd"krè|jd}tj}n,t|jƒd*kr|j\}}n| d"| ¡¡t |ƒrt  |d(¡ }|j||jd+Wdƒn1sR0Y|jr¢|d,krzd- |¡} n d. ||¡} t | ƒn| d"d' |¡¡n¸|jdur\|j d¡} tj | ¡\} } d/d/d0d0d1d1d1d1d2œ} | | vrød3| | nd4}|j}t  | |¡&}|D]}| |¡qWdƒn1s<0Y|jr\t d5 | ¡ƒdS)6Nrz3A simple command-line interface for tarfile module.)Ú descriptionz-vz --verboseÚ store_trueFzVerbose output)ÚactionÚdefaultÚhelpz--filterz zFilter for extraction)ÚmetavarÚchoicesrRT)Zrequiredz-lz--listú zShow listing of a tarfile)rSrRz-ez --extractú+)rUz zExtract tarfile into target dir)ÚnargsrSrRz-cz--create)zzzCreate tarfile from sourcesz-tz--testzTest if a tarfile is validr#z&--filter is only valid for extraction rwrFz{!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:rxz{!r} file created.)ÚargparseÚArgumentParserÚ add_argumentrûZadd_mutually_exclusive_groupÚ parse_argsrðrÚexitÚtestrrrÍrkrirHrîrSrrr2rzÚcurdirZ format_helprZcreateÚpopr%Úsplitextrõ)rXrNÚparserrwÚargsr_r“Ztfr^rJZtar_namerZextZ compressionsZtar_modeZ tar_filesÚ file_namer8r8r9ÚmainZ s   ÿþ  ÿ þ þ ÿ    2  0    0  ÿ   õ .rdÚ__main__)T)nÚversionÚ __author__Ú __credits__Úbuiltinsrr£rirzrÔrZrÔr°rVrÚreÚwarningsrærrèÚAttributeErrorÚNotImplementedErrorr7r¥Ú NameErrorÚ__all__r3rÇrÇr3r.r0r/rErrYrŽrrGrHr"r‘ZCONTTYPEr6r5rZr?rArhr rrrrkr‹r]rˆrzr;rIr‰r‚r Úgetfilesystemencodingr:r?rNrTrXr[rlr>rr rrr r rqrrrsrKrtrurŠÚobjectr–rËÚBufferedReaderrßrérêrírórôrõrörr r rrrûrÚcompilerurrrrdrnr8r8r8r9Ú s         üÿÿú  sh   Dý  ^_