grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026o ®û|j‰ºã @s dZdZdZddlmZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZzddlZWn eyFdZYnwzddlZWn eyXdZYnweefZzeef7ZWn eymYnwgd¢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„Zlemdsk�relƒdSdS)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-8cCs: |dur tdƒ‚| ||¡}|d|…|t|ƒtS)Nzmetadata cannot contain None)Ú ValueErrorÚencodeÚlenÚNUL)ÚsÚlengthÚencodingÚerrors©r8ú./opt/alt/python310/lib64/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Ústripr0ÚInvalidHeaderError)r4ÚnÚir8r8r9Únti°s   û  þÿrNrBcCsä |}t|ƒ}d|krd|dkr&nntd|d|fdƒt}|S|tkrnd|d |kr=d|dkrnntd ƒ‚|dkrLtdgƒ}n tdgƒ}d||}t|dƒD]}| d|d@¡|dL}q]|Std ƒ‚) NrrBr#z%0*orDrCr@rAzoverflow in number field)rIÚbytesr3rÚ bytearrayrHÚinsertr0)rLÚdigitsÚformatZ original_nr4rMr8r8r9ÚitnÄs"  0ó ö    þrTcCs2 dtt d|¡ƒ}dtt d|¡ƒ}||fS)NrCZ 148B8x356BZ 148b8x356b)ÚsumÚstructZ unpack_from)ÚbufZunsigned_chksumZ signed_chksumr8r8r9Ú calc_chksumsâsrXc Cs¨ |pd}|dkr dS|durt |||¡dSt||ƒ\}}t|ƒD]}| |¡}t|ƒ|kr4|dƒ‚| |¡q#|dkrR| |¡}t|ƒ|krM|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|dd�dS)Nr6Úbackslashreplaceú )Úend)ÚgetattrÚsysÚstdoutr1r=Úprint)r4r6r8r8r9Ú _safe_printsrlc@óeZdZ dS)rN©Ú__name__Ú __module__Ú __qualname__r8r8r8r9rórc@rm)r Nrnr8r8r8r9r rrr c@rm)rNrnr8r8r8r9rrrrc@rm)rNrnr8r8r8r9rrrrc@rm)r Nrnr8r8r8r9r rrr c@rm)r Nrnr8r8r8r9r rrr c@rm)ÚEmptyHeaderErrorNrnr8r8r8r9rs!rrrsc@rm)ÚTruncatedHeaderErrorNrnr8r8r8r9rt$rrrtc@rm)ÚEOFHeaderErrorNrnr8r8r8r9ru'rrruc@rm)rKNrnr8r8r8r9rK*rrrKc@rm)ÚSubsequentHeaderErrorNrnr8r8r8r9rv-rrrvc@ó.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Úhasattrr|rÚfd)ÚselfÚnameÚmoder8r8r9Ú__init__:sþý  z_LowLevelFile.__init__cCst |j¡dS©N)r}Úcloserƒ©r„r8r8r9r‰Cóz_LowLevelFile.closecCst |j|¡Srˆ)r}r]rƒ©r„r'r8r8r9r]Fóz_LowLevelFile.readcCst |j|¡dSrˆ)r}r^rƒ©r„r4r8r8r9r^Isz_LowLevelFile.writeN)rorprqr‡r‰r]r^r8r8r8r9rx4s   rxc@speZdZ dd„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|_|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 availablerzÚbz2úbz2 module is not availableÚxzúlzma module is not availableÚtarúunknown compression type %r) Ú _extfileobjrxÚ _StreamProxyÚ getcomptyper…r†ÚcomptypeÚfileobjrarWÚposÚclosedÚzlibÚ ImportErrorrÚcrc32ÚcrcÚ _init_read_gzÚerrorr`Ú_init_write_gzr”ÚdbufZBZ2DecompressorÚcmpÚOSErrorZ BZ2CompressorÚlzmaZLZMADecompressorÚ LZMAErrorZLZMACompressorr‰) r„r…r†r�ržrar¡r”r«r8r8r9r‡Wsv     ÿ    ÿ     ÿ  ÿ 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|j dd…|_ t j |j ¡|_ |  |j  dd ¡t¡dS) Né rú|j  d||df¡|j  d||||f¡||7}||}q,||jkre|j  d||jdf¡dSdS)Nrr…FT) ržÚoffsetr'Úpositionrhr…r Ú map_indexÚmaprÊ)r„ržrÔr'Z blockinfoZlastposZrealposr8r8r9r‡ds*    ÿz_FileInFile.__init__cCsdSrˆr8rŠr8r8r9rº}óz_FileInFile.flushcCódS©NTr8rŠr8r8r9Úreadable€rØz_FileInFile.readablecCrÙ©NFr8rŠr8r8r9ÚwritableƒrØz_FileInFile.writablecCs |j ¡Srˆ)ržÚseekablerŠr8r8r9rÞ†ó z_FileInFile.seekablecCrÃrˆ)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_ENDr0)r„rÕÚwhencer8r8r9rÇŽs  ÷û üÿz_FileInFile.seekc Cs |dur |j|j}n t||j|jƒ}d}|dkr† |j|j\}}}}||jkr1|kr4nnn|jd7_|jt|jƒkrFd|_qt|||jƒ}|rq|j ||j|¡|j |¡}t|ƒ|krlt dƒ‚||7}n|t |7}||8}|j|7_|dks|S)Nr’rTr#rY) r'rÕrâr×rÖr2ržrÇr]rr3) r„r'rWrÆÚstartÚstoprÔr5rdr8r8r9r]žs4ù    íz_FileInFile.readcCs&| t|ƒ¡}||dt|ƒ…<t|ƒSrˆ)r]r2)r„rdrWr8r8r9Úreadinto½sz_FileInFile.readintocCs d|_dSrÚ)r rŠr8r8r9r‰Ârßz_FileInFile.closerˆ)rorprqr‡rºrÛrÝrÞrÄràrárÇr]rér‰r8r8r8r9rÓ^s   rÓcóeZdZ‡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__©rorprqr‡Ú __classcell__r8r8rñr9rëÆsrëc@s eZdZdS)Ú FilterErrorNrnr8r8r8r9rõÓsrõcrê)ÚAbsolutePathErrorcs ||_tƒ d|j›d�¡dS)Nzmember z has an absolute path©rðrîr‡r…©r„rðrñr8r9r‡×szAbsolutePathError.__init__rór8r8rñr9röÖóröcrê)ÚOutsideDestinationErrorcó.||_||_tƒ |j›d|›d�d¡dS)Nz would be extracted to ú, ú which is outside the destination©rðÚ_pathrîr‡r…©r„rðr%rñr8r9r‡Üó  ÿz OutsideDestinationError.__init__rór8r8rñr9rúÛrùrúcrê)ÚSpecialFileErrorcó||_tƒ |j›d�¡dS)Nz is a special filer÷rørñr8r9r‡ãózSpecialFileError.__init__rór8r8rñr9rârùrcrê)ÚAbsoluteLinkErrorcr)Nz is a link to an absolute pathr÷rørñr8r9r‡èrzAbsoluteLinkError.__init__rór8r8rñr9rçrùrcrê)ÚLinkOutsideDestinationErrorcrû)Nz would link to rürýrþrrñr8r9r‡írz$LinkOutsideDestinationError.__init__rór8r8rñr9rìrùrcrê)ÚLinkFallbackErrorcs2||_||_tƒ d|j›d�d|›d�¡dS)Nzlink z would be extracted as a zcopy of z, which was rejectedrþrrñr8r9r‡ôs   ÿzLinkFallbackError.__init__rór8r8rñr9rórùrTc Cs,i}|j}tjj|tjjd�}| dtjf¡r$|j dtj¡}|d<tj |¡r.t |ƒ‚tjjtj  ||¡tjjd�}tj  ||g¡|krLt ||ƒ‚|j }|dur†|d@}|r}| ¡sa| ¡rn|d@si|dM}|dO}n| ¡sv| ¡ryd}nt|ƒ‚||j kr†||d<|�r|jdur’d|d <|jdur›d|d <|jdur¤d|d <|jdur­d|d <| ¡s¶| ¡�rtj |j¡rÁt|ƒ‚||krÊt ||ƒ‚tj |j¡}||jkrÚ||d <| ¡rótj | dtj¡¡}tj  |||¡}ntj  ||¡}tjj|tjjd�}tj  ||g¡|k�rt||ƒ‚|S)N)rEú/r…iíé@i¶ÿÿÿé€r†r)r*r+r,Úlinkname)r…r}r%ÚrealpathÚ ALLOW_MISSINGrÒÚsepÚlstripÚisabsrörËÚ commonpathrúr†ÚisregÚislnkÚisdirÚissymrr)r*r+r,r rÚnormpathÚdirnameÚrstripr) ÚmemberÚ dest_pathZfor_dataÚ new_attrsr…Z target_pathr†Z normalizedZlink_dirr8r8r9Ú_get_filtered_attrsÿsh ÿ         ÿ rcCs|Srˆr8)rrr8r8r9Úfully_trusted_filterIrØrcCs,t||dƒ}|r|jdi|¤ddi¤ŽS|S)NFÚdeepr8©rr²©rrrr8r8r9Ú tar_filterLó r!cCs,t||dƒ}|r|jdi|¤ddi¤ŽS|S)NTrFr8rr r8r8r9Ú data_filterRr"r#)Z fully_trustedr˜rÆs([0-9]{1,20}) c @sNeZdZ ed€idd“dd“dd“dd“d d “d d “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 e e e e e e e e d2e d3œ d4d5„Z d6d7„Z eed8fd9d:„Zd;d<„Zd=d>„Zd?d@„ZedAdB„ƒZdCdD„ZedEdF„ƒZedGdH„ƒZedIdJ„ƒZedKdL„ƒZedMdN„ƒZed2dOœdPdQ„ƒZedRdS„ƒZed2dOœdTdU„ƒZdVdW„Z dXdY„Z!dZd[„Z"d\d]„Z#d^d_„Z$d`da„Z%dbdc„Z&ddde„Z'dfdg„Z(dhdi„Z)djdk„Z*dldm„Z+dndo„Z,dpdq„Z-drds„Z.dtdu„Z/dvdw„Z0dxdy„Z1dzd{„Z2d|d}„Z3d~d„Z4d$S)‚rr…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,z Group 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&r'rÔrìrír(©r„r…r8r8r9r‡‹s$ zTarInfo.__init__cCrÃrˆ©r…rŠr8r8r9r%£óz TarInfo.pathcCó ||_dSrˆr-r,r8r8r9r%¨ó cCrÃrˆ©r rŠr8r8r9r&¬r.zTarInfo.linkpathcCr/rˆr1)r„r r8r8r9r&±r0cCsd|jj|jt|ƒfS)Nz<%s %r at %#x>)ròror…ÚidrŠr8r8r9Ú__repr__µszTarInfo.__repr__T) r…r(r†r r)r*r+r,rÚ_KEEPc Cs� | r t |¡} nt |¡} || ur|| _|| ur|| _|| ur#|| _|| ur*|| _|| ur1|| _|| ur8|| _|| ur?|| _|| urF|| _ | Srˆ) ÚcopyZdeepcopyr…r(r†r r)r*r+r,) r„r…r(r†r r)r*r+r,rr4Úresultr8r8r9r²¸s*  zTarInfo.replacecCs‚ |jdur d}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(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†Úinfor8r8r9Úget_infoÔs*  ózTarInfo.get_infoÚsurrogateescapecCsx | ¡}| ¡D]\}}|durtd|ƒ‚q |tkr#| |||¡S|tkr.| |||¡S|tkr8| ||¡Stdƒ‚)Nz%s may not be Nonezinvalid format) r:Úitemsr0r Úcreate_ustar_headerrÚcreate_gnu_headerrÚcreate_pax_header)r„rSr6r7r9r…Úvaluer8r8r9Útobufðs ÿ 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_LINKr0Ú LENGTH_NAMEÚ_posix_split_nameÚ_create_headerr )r„r9r6r7r8r8r9r=szTarInfo.create_ustar_headercCs‚ t|d<d}t|d ||¡ƒtkr|| |dt||¡7}t|d ||¡ƒtkr7|| |dt||¡7}|| |t ||¡S)NrBr’r r…) Ú GNU_MAGICr2r1rEÚ_create_gnu_long_headerÚGNUTYPE_LONGLINKrFÚGNUTYPE_LONGNAMErHr)r„r9r6r7rWr8r8r9r>szTarInfo.create_gnu_headerc CsF t|d<|j ¡}ddtfddtfddfD]2\}}}||vr qz || dd ¡Wnty9||||<Yqwt||ƒ|krH||||<qd D]A\}}d }||} t| t ƒ} | r`t | ƒn| } d | krpd |dksxnd ||<d}n| r€| ||<d}|rŒ||vrŒt | ƒ||<qK|r—|  |t |¡} nd} | | |tdd¡S)NrBr…r%r r&)r+r+é )r,r,rMrDrE))r)rB)r*rB)r'é )r(rNFrrBr#Tr’r²)rDr(r5rFrEr1ÚUnicodeEncodeErrorr2Ú isinstanceÚfloatÚroundÚstrÚ_create_pax_generic_headerÚXHDTYPErHr ) r„r9r6r(r…Zhnamer5rRZ needs_paxÚvalZ val_is_floatZval_intrWr8r8r9r?sF þ  þ €    €zTarInfo.create_pax_headercCs | |td¡S)Nr/)rTÚXGLTYPE)Úclsr(r8r8r9Úcreate_pax_global_headerVsz 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_PREFIXrFr0)r„r…r6r7Z componentsrMrCr8r8r9rG\s €þzTarInfo._posix_split_namec Cs¨ | d¡ttfv}|r!t| dd¡d|ƒ}t| dd¡d|ƒ}ntdd||ƒ}tdd||ƒ}| dt¡}|dur=tdƒ‚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)Nr%r&rrBr'r‘zTarInfo.type must not be Noner…rr†r7r)r*r'rNr(s r rBr+rMr,rCrz%dsr’i”þÿÿz%06orDi›þÿÿ)ÚgetÚCHRTYPEÚBLKTYPErTr:r+r0rDrVr´rÏrËrXrO) r9rSr6r7Zhas_device_fieldsr&r'ZfiletypeÚpartsrWr$r8r8r9rHls<  ñ&zTarInfo._create_headercCs0 tt|ƒtƒ\}}|dkr|t|t7}|S)Nr)r\r2rÏr3)Zpayloadrbrcr8r8r9Ú_create_payload–s zTarInfo._create_payloadcCsT | ||¡t}i}d|d<||d<t|ƒ|d<t|d<| |t||¡| |¡S)Nz ././@LongLinkr…r%r'rB)r1r3r2rIrHr r`)rXr…r%r6r7r9r8r8r9rJ s ÿzTarInfo._create_gnu_long_headerc Cs. d}| ¡D]\}}z| dd¡Wqtyd}Ynwd}|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/rETr’s21 hdrcharset=BINARY r;rÐrrDó ó=ó z././@PaxHeaderr…r%r'rBr²) r<r1rOr2rSrOrDrHr r`) rXr(r%r6ZbinaryÚkeywordr@ZrecordsÚlrLr>r9r8r8r9rT±sD þ  ü( ÿz"TarInfo._create_pax_generic_headercCs | |||¡Srˆ)Ú_frombuf)rXrWr6r7r8r8r9ÚfrombufäszTarInfo.frombuf©Údircheckc Csl t|ƒdkr tdƒ‚t|ƒtkrtdƒ‚| t¡tkr tdƒ‚t|dd…ƒ}|t|ƒvr2t 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…||ƒ}|rÄ|jtkrÄ|j  d¡rÄt|_|jtk�rd}g} tdƒD]0} zt|||d…ƒ} t||d|d…ƒ} Wn työYn w|  | | f¡|d7}qÒt|dƒ} t|dd…ƒ}| | |f|_ | !¡�r#|j  "d¡|_ |�r4|jt#v�r4|d|j |_ |S)Nrz empty headerztruncated headerzend of file headeré”éœz bad checksumrélété|éˆé�ii i)iIiQiYiôri‚r¾rNéiâiãiï)$r2rsrÏrtÚcountr3rurNrXrKr?r…r†r)r*r'r(r$r%r r+r,r&r'ÚAREGTYPEr·r8ÚGNUTYPE_SPARSErHr0rÊÚboolr)rrÚ GNU_TYPES)rXrWr6r7rir$ÚobjrCrŸÚstructsrMrÔÚnumbytesÚ isextendedÚorigsizer8r8r9rfís^      ÿ    zTarInfo._frombufcCs | |¡Srˆ)Ú _fromtarfile)rXrïr8r8r9Ú fromtarfile1s zTarInfo.fromtarfilecCs> |j t¡}|j||j|j|d�}|j ¡t|_| |¡S)Nrh) ržr]rÏrfr6r7rÄrÔÚ _proc_member)rXrïrirWrwr8r8r9r|8s   zTarInfo._fromtarfilecCsR |jttfvr | |¡S|jtkr| |¡S|jtttfvr$|  |¡S|  |¡Srˆ) r%rLrKÚ _proc_gnulongrtÚ _proc_sparserUrWÚSOLARIS_XHDTYPEÚ _proc_paxÚ _proc_builtin)r„rïr8r8r9r~Ms     zTarInfo._proc_membercCsj |j ¡|_|j}| ¡s|jtvr|| |j¡7}||_|  |j |j |j ¡|  ¡r3|j d¡|_|S)Nr)ržrÄrìrr%ÚSUPPORTED_TYPESÚ_blockr'rÔÚ_apply_pax_infor(r6r7rr…r)r„rïrÔr8r8r9rƒZs zTarInfo._proc_builtinc Cs¬ |j | |j¡¡}z |j|dd�}Wnty'}ztt|ƒƒd‚d}~ww|j|_|j t kr;t ||j |j ƒ|_n|j tkrIt ||j |j ƒ|_| ¡rT|j d¡|_|S)NFrhr)ržr]r…r'r|r rvrSrÔr%rLr?r6r7r…rKr rÚ removesuffix)r„rïrWÚnextrÎr8r8r9rps €ÿ  zTarInfo._proc_gnulongc CsØ |j\}}}|`|rT|j t¡}d}tdƒD]4}zt|||d…ƒ}t||d|d…ƒ} Wn ty;Ynw|rG| rG| || f¡|d7}qt|dƒ}|s ||_ |j  ¡|_ |j |  |j ¡|_||_ |S)NrérNrqiø)r)ržr]rÏrHrNr0rÊrurírÄrìr…r'rÔ) r„rïrxrzr{rWrŸrMrÔryr8r8r9r€‹s.    ÿ  ô zTarInfo._proc_sparsec CsÖ |j | |j¡¡}|jtkr|j}n|j ¡}d}d}g}t|ƒ|kr¶||dkr¶t   ||¡}s7t dƒ‚z t |  d¡ƒ}Wn tyKt dƒ‚w|dkrTt dƒ‚||t|ƒkr`t dƒ‚| d¡|d} || d¡d| …} |  d¡\} } } | rˆ| dksˆ|| dkrŒt dƒ‚| || | f¡| dkr¦|dur¦| dkr¤|j}nd }||7}t|ƒ|kr¶||dks+|dur¼d }|D]*\}} } | | d d |j¡}|tvrÛ| | ||j|j¡}n | | d d |j¡}|||<q¾z |j|d d �}Wnt�y}ztt|ƒƒd‚d}~wwd |v�r| ||¡n#d |v�r| ||¡n| d¡dk�r6| d¡dk�r6| |||¡|jtt fv�ri| !||j|j¡|j"|_"d|v�ri|j#}| $¡�s^|jt%v�rf|| |j¡7}||_"|S)NrrGr#érbrÑs hdrcharsetsBINARYr/FrhúGNU.sparse.mapúGNU.sparse.sizezGNU.sparse.majorÚ1zGNU.sparse.minorrFr')&ržr]r…r'r%rWr(r5r2Ú_header_length_prefix_reÚmatchrKrIÚgroupr0rçrgÚ partitionrÊr6Ú_decode_pax_fieldr7ÚPAX_NAME_FIELDSr|r rvrSÚ_proc_gnusparse_01Ú_proc_gnusparse_00r\Ú_proc_gnusparse_10rUr�r†rÔrìrr„)r„rïrWr(rŸr6Ú raw_headersr�r5Zheader_value_end_offsetZkeyword_and_valueZ raw_keywordZequalsZ raw_valuerdr@rˆrÎrÔr8r8r9r‚§s†   ÿ Ú) ÿ ÿ ÿ €ÿ    zTarInfo._proc_paxc Csš g}g}|D];\}}}|dkr'z | t| ¡ƒ¡Wqty&tdƒ‚w|dkrBz | t| ¡ƒ¡WqtyAtdƒ‚wqtt||ƒƒ|_dS)NsGNU.sparse.offsetrGsGNU.sparse.numbytes)rÊrIr=r0rKÚlistÚziprí)r„rˆr—ZoffsetsryÚ_rdr@r8r8r9r• s$ ÿ ÿýzTarInfo._proc_gnusparse_00cCsB dd„|d d¡Dƒ}tt|ddd…|ddd…ƒƒ|_dS)NcSsg|]}t|ƒ‘qSr8)rI)Ú.0Úxr8r8r9Ú 7sz.TarInfo._proc_gnusparse_01..r‹ú,r$r#)rZr˜r™rí)r„rˆr(rír8r8r9r”4s(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)Nrcr#r$) ržr]rÏrZrIr2rÊrÄrìr˜r™rí)r„rˆr(rïZfieldsrírWZnumberr8r8r9r–:s ü (zTarInfo._proc_gnusparse_10c Cs | ¡D]T\}}|dkrt|d|ƒq|dkr!t|dt|ƒƒq|dkr.t|dt|ƒƒq|tvrY|tvrJzt||ƒ}Wn tyId}Ynw|dkrS| d¡}t|||ƒq| ¡|_dS)NzGNU.sparse.namer%rŒr'zGNU.sparse.realsizerr) r<ÚsetattrrIÚ PAX_FIELDSÚPAX_NUMBER_FIELDSr0rr5r()r„r(r6r7rdr@r8r8r9r†Js( ÿ  €zTarInfo._apply_pax_infocCs0 z| |d¡WSty| ||¡YSw)NrE)r=ÚUnicodeDecodeError)r„r@r6Zfallback_encodingZfallback_errorsr8r8r9r’as  ÿzTarInfo._decode_pax_fieldcCs4 |dkr tdƒ‚t|tƒ\}}|r|d7}|tS)Nrzinvalid offsetr#)rKr\rÏ)r„rrrbrcr8r8r9r…iszTarInfo._blockcCs |jtvSrˆ)r%Ú REGULAR_TYPESrŠr8r8r9ruó z TarInfo.isregcCs | ¡Srˆ)rrŠr8r8r9ÚisfileyszTarInfo.isfilecCó |jtkSrˆ)r%r8rŠr8r8r9r}r¤z TarInfo.isdircCr¦rˆ)r%ÚSYMTYPErŠr8r8r9r�r¤z TarInfo.issymcCr¦rˆ)r%ÚLNKTYPErŠr8r8r9r…r¤z TarInfo.islnkcCr¦rˆ)r%r]rŠr8r8r9Úischr‰r¤z TarInfo.ischrcCr¦rˆ)r%r^rŠr8r8r9Úisblk�r¤z TarInfo.isblkcCr¦rˆ)r%ÚFIFOTYPErŠr8r8r9Úisfifo‘r¤zTarInfo.isfifocCs |jduSrˆ)rírŠr8r8r9Úissparse•rßzTarInfo.issparsecCs |jtttfvSrˆ)r%r]r^r«rŠr8r8r9Úisdev˜sz TarInfo.isdevr8)r‘)5rorprqÚdictÚ __slots__r‡Úpropertyr%Úsetterr&r3r4r²r:rr rAr=r>r?Ú classmethodrYrGÚ staticmethodrHr`rJrTrgrfr}r|r~rƒrr€r‚r•r”r–r†r’r…rr¥rrrr©rªr¬r­r®r8r8r8r9rhsÌÿþýüûúùø õ óòñðïîíëêéè      ý :  )   2 C  y  rc@s eZdZ dZdZdZdZeZe Z dZ e Z eZdZ    djdd„Zedddefd d „ƒZedkd d „ƒZedldd„ƒZedldd„ƒZedmdd„ƒZdddddœZdd„Zdd„Zdd„Zdd „Zdnd!d"„Zdodd$œd%d&„Zdpdd'œd(d)„Z dqd*d+„Z!d,d-„Z"drddd/œd0d1„Z#d2d3„Z$dsddd/œd5d6„Z%d7d8„Z& dqd9d:„Z'd;d<„Z(d=d>„Z)d?d@„Z* # dtdddAœdBdC„Z+dDdE„Z,dFdG„Z-dHdI„Z.dJdK„Z/dLdM„Z0dNdO„Z1dPdQ„Z2dRdS„Z3dTdU„Z4dVdW„Z5dXdY„Z6dudZd[„Z7d\d]„Z8dqd^d_„Z9d`da„Z:dbdc„Z;ddde„ZdS)vrrFr#Nrzr;c Cs’ dddddœ}||vrtdƒ‚||_|||_|s5|jdkr+tj |¡s+d|_d|_t||jƒ}d |_n |durIt|d ƒrIt |j t t 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¡Ynt&�y }zt't |ƒƒd‚d}~wwqÑ|jdv�r3d |_|j�r6|j (|j )¡¡}|j *|¡|jt+|ƒ7_WdSWdSWdS|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œ)-r0r†Ú_moder}r%ÚexistsÚ bltn_openršr‚rPr…rSrOÚabspathržrSrðÚ dereferenceÚ ignore_zerosr6r7rr(ÚdebugÚ errorlevelÚ copybufsizer ÚmembersÚ_loadedrÄrÔÚinodesÚ firstmemberrˆrÇr}rÊrur rrYr5r^r2r‰)r„r…r†ržrSrðr¿rÀr6r7r(rÁrÂrÃZmodesrÎrWr8r8r9r‡¹s˜  ÿ       €ÿø  ú zTarFile.__init__c sæ |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¢|  d d ¡\} }| 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)rzúr:*csˆj|dkS)NÚtaropen)Ú OPEN_METH)r�©rXr8r9Únot_compressedRr�z$TarFile.open..not_compressed)Úkeyrzz - method z: Ú z'file could not be opened successfully: ú:r#r˜r™ú|ryzmode must be 'r' or 'w'Frºzundiscernible mode)r0ÚsortedrÊrhrÄrrrÊrÇrËrZr�r‰ršrÉ)rXr…r†ržraÚkwargsrÌZ error_msgsr�ÚfuncZ saved_posrÎZerror_msgs_summaryÚfilemodeÚstreamrÍr8rËr9r(s\#   €ü   z TarFile.opencKs& |dvr tdƒ‚||||fi|¤ŽS)Nr·r¹)r0)rXr…r†ržrÒr8r8r9rɆszTarFile.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©rzr{rœúmode must be 'r', 'w' or 'x'r)ÚGzipFilezgzip module is not availablerdrzr»F) r0ZgziprØr¢rrªrrÉr‰rš) rXr…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Ùrzznot a bzip2 fileF) r0r”rÛr¢rrÉrªÚEOFErrorr‰rrš) rXr…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—)Úpresetrzznot an lzma fileF) r0r«rÞr¬r¢rrÉrÜr‰rrš) rXr…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„rbrcr8r8r9r‰òs" € ÿ ÿz TarFile.closecCs* | | d¡¡}|durtd|ƒ‚|S)Nrzfilename %r not found)Ú _getmemberrÚKeyError)r„r…rðr8r8r9Ú getmembers  zTarFile.getmembercCs | ¡|js | ¡|jSrˆ)Ú_checkrÅÚ_loadrÄrŠr8r8r9Ú getmemberss zTarFile.getmemberscCs dd„| ¡DƒS)NcSsg|]}|j‘qSr8r-)r›rðr8r8r9r� sz$TarFile.getnames..)rçrŠr8r8r9ÚgetnamesszTarFile.getnamesc CsL | d¡|dur |j}|dur|}tj |¡\}}| tjd¡}| d¡}| ¡}||_ |durA|j s;t  |¡}n t  |¡}nt  | ¡¡}d}|j}t  |¡r€|j|jf} |j st|jdkrt| |jvrt||j| krtt} |j| }n;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êz t- .|j$¡d|_/Wn t0yéYnwt1�rz t1 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²rrrðrïr¿ÚlstatÚstatÚfstatÚfilenoÚst_modeÚS_ISREGÚst_inoÚst_devÚst_nlinkrÆr¨r+ÚS_ISDIRr8ÚS_ISFIFOr«ÚS_ISLNKr§ÚreadlinkÚS_ISCHRr]ÚS_ISBLKr^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%r8r8r9Ú gettarinfo"s†        €        ÿÿzTarFile.gettarinfoT)rÄcCs$ | ¡|dur |}|D]‚}|rg|jdurtdƒntt |j¡ƒtd|jp*|j|jp/|jfƒ|  ¡s;|  ¡rHtdd|j |j fƒntd|j ƒ|jdurYtdƒntdt |j¡dd…ƒt|j| ¡rpd nd ƒ|rŒ| ¡r�td |jƒ| ¡rŒtd |jƒtƒq dS) Nz ??????????z%s/%sz%10sz%d,%dz%10dz????-??-?? ??:??:??z%d-%02d-%02d %02d:%02d:%02dr½rr‘z-> zlink to )rår†rlrîrÔr+r)r,r*r©rªr&r'r'r(rµÚ localtimer…rrr rrk)r„ÚverboserÄrðr8r8r9r˜…s<   ÿÿ  ÿæ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žt t  |¡ƒD]}|j tj ||¡tj ||¡||d�qˆdSdS|  |¡dS) Nrér$ztarfile: Skipped %rr#ztarfile: Unsupported type %rútarfile: Excluded %rrµr )rår…r}r%r¾Ú_dbgrrr½ÚaddfilerrÑÚlistdirÚaddrË)r„r…rÚ recursiver rðÚfr8r8r9r«s>    "ÿ ÿþz TarFile.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é)rarr#)rår5rArSr6r7ržr^rÔr2rÃr[r'r\rÏr3rÄrÊ)r„rðržrWrarbrcr8r8r9r Þs   zTarFile.addfilecCsh|dur|j}|dur tSt|tƒrtdƒ‚|St|ƒr|Szt|WSty3td|›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_filterrrPrSÚ TypeErrorÚcallableÚ_NAMED_FILTERSrãr0)r„r r8r8r9Ú_get_filter_function÷s  ÿ  ÿzTarFile._get_filter_functionÚ.)Ú numeric_ownerr c Cs¢ g}| |¡}|dur|}|D]&}| |||¡\}} |dur q| ¡r)| | ¡|j||| ¡ ||d�q|jdd„dd�|D]Œ} zsz|| |ƒ}Wntyg} z| | t| ƒ¡WYd} ~ WqBd} ~ ww|durt| | d¡WqBt j   ||j ¡} zt   | ¡} Wnty“| |d¡YWqBwt | j¡s¢| |d¡WqB|j|| |d �| || ¡| || ¡WqBtyÎ} z | | ¡WYd} ~ qBd} ~ wwdS) N)Ú set_attrsrÚfilter_functioncSs|jSrˆr-)r¸r8r8r9Ú, sz$TarFile.extractall..T)rÍÚreversezexcluded by filterZmissingznot a directory)r)rÚ_get_extract_tarinforrÊÚ _extract_oneÚsortÚ_FILTER_ERRORSÚ_log_no_directory_fixupÚreprr}r%rËr…ríÚFileNotFoundErrorrîrörñÚchownÚutimeÚchmodr Ú_handle_nonfatal_error)r„r%rÄrr Z directoriesrrrðÚ unfilteredÚexcÚdirpathrírÎr8r8r9Ú extractall sd ÿ þ€þÿ  þ   €ÿåzTarFile.extractallcCs| dd|j|f¡dS)Nr$z(tarfile: Not fixing up directory %r (%s))r r…)r„rÚreasonr8r8r9r!N s ÿzTarFile._log_no_directory_fixupr‘c CsB | |¡}| |||¡\}}|dur|j|||||d�dSdS)N)r)rrr) r„rr%rrr rrðr(r8r8r9ÚextractR s ÿ  ÿÿzTarFile.extractc CsØ t|tƒr | |¡}n|}d}z|||ƒ}Wn/ttfy0}z | |¡WYd}~nd}~wtyF}z | |¡WYd}~nd}~ww|durV| dd|j ¡dS|  ¡rht   |¡}t j  ||j¡|_||fS)Nr$r )NN)rPrSrärªrõÚ_handle_fatal_errorr r'r r…rr5r}r%rËr r*)r„rrr%r(ÚfilteredrÎr8r8r9rg s*  €€ÿ zTarFile._get_extract_tarinfoc Cs” | d¡z|j|tj ||j¡||||d�WdSty2}z | |¡WYd}~dSd}~wtyI}z |  |¡WYd}~dSd}~ww)Nrz)rrrÚextraction_root) råÚ_extract_memberr}r%rËr…rªr.r r')r„rðr%rrrrÎr8r8r9r… s   ü€€ÿzTarFile._extract_onecCs" |jdkr‚| dd|¡dS)Nr#ú tarfile: %s)rÂr ©r„rÎr8r8r9r'™ s zTarFile._handle_nonfatal_errorcCsr |jdkr‚t|tƒr*|jdur| dd|j¡dS| dd|j|jf¡dS| ddt|ƒj|f¡dS)Nrr#r2ztarfile: %s %rztarfile: %s %s)rÂrPrªÚfilenamer Ústrerrorr%ror3r8r8r9r.  s   zTarFile._handle_fatal_errorcCs| | d¡t|tƒr| |¡}n|}| ¡s|jtvr"| ||¡S| ¡s*|  ¡r| ¡r]| ||¡n3| ¡se| ¡rl| ||¡n$| ¡st|  ¡r~|j||||d�n|jtvrŠ| ||¡n| ||¡|r«| |||¡|  ¡s­| ||¡| ||¡dSdSdS)Nrr#z%s -> %sr9)rr²r}rr%rr¼Úmakedirsrrr r…r rÚmakefilerÚmakedirr¬Úmakefifor©rªÚmakedevÚmakelink_with_filterr%r„Ú makeunknownr$r&r%)r„rðÚ targetpathrrrr0Z upperdirsr8r8r9r1Ì sB   ý   üzTarFile._extract_membercCsD z|jdurt |¡WdSt |d¡WdSty!YdSw)NiÀ)r†r}ÚmkdirÚFileExistsError©r„rðrAr8r8r9r< 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ðrAÚsourceraÚtargetrÔr'r8r8r9r; s      ø"úzTarFile.makefilecCs$ | ||¡| dd|j¡dS)Nr#z9tarfile: Unknown file type %r, extracted as regular file.)r;r r%rDr8r8r9r@" s   ÿzTarFile.makeunknowncCs" ttdƒr t |¡dStdƒ‚)NÚmkfifozfifo not supported by system)r‚r}rHr rDr8r8r9r=* s zTarFile.makefifocCsl ttdƒr ttdƒstdƒ‚|j}|durd}| ¡r"|tjO}n|tjO}t ||t  |j |j ¡¡dS)NÚmknodr>z'special devices not supported by systemr ) r‚r}r r†rªrîÚS_IFBLKÚS_IFCHRrIr>r&r')r„rðrAr†r8r8r9r>2 s  ÿzTarFile.makedevcCs| ||dd¡Srˆ)r?rDr8r8r9ÚmakelinkD r‹zTarFile.makelinkc Cs0 d}z,| ¡rtj |¡rt |¡t |j|¡WdStj |j¡r.t  |j|¡WdSWn t y:d}Ynwz|  |¡}Wnt yQ|rPt dƒd‚‚w|durY|}n.|durat dƒ‚z||j|jdd�|ƒ|||ƒ}Wnty†}zt||jƒ|‚d}~ww|dur–|j||||d�dSdS)NFTz%unable to resolve link inside archivez[makelink_with_filter: if filter_function is not None, extraction_root must also not be None)r…rr9)rr}r%ÚlexistsÚunlinkÚsymlinkr r¼r*ÚlinkÚsymlink_exceptionr8rãr r²r…r rr1) r„rðrArr0Zkeyerror_to_extracterrorr(r/Úcauser8r8r9r?G s`  þ ÿ ÿÿûÿþ€ÿ þÿzTarFile.makelink_with_filterc Cs  ttdƒr�t ¡dkrƒ|j}|j}|sFztr"|jr"t |j¡d}Wn ty,Ynwzt r;|j r;t   |j ¡d}Wn tyEYnw|durLd}|durRd}z|  ¡rfttdƒrft  |||¡WdSt |||¡WdSty€}ztdƒ|‚d}~wwdSdS)NÚgeteuidrr$r;Úlchownzcould not change owner)r‚r}rSr*r)rr,Zgetgrnamrãrr+ÚgetpwnamrrTr$rªr )r„rðrArÚgÚurÎr8r8r9r$| s@ € ÿ € ÿ €ÿèz TarFile.chownc CsH |jdurdSz t ||j¡WdSty#}ztdƒ|‚d}~ww)Nzcould not change mode)r†r}r&rªr )r„rðrArÎr8r8r9r&� s  €ÿz TarFile.chmodc Cs\ |j}|dur dSttdƒsdSz t |||f¡WdSty-}ztdƒ|‚d}~ww)Nr%z"could not change modification time)r(r‚r}r%rªr )r„rðrAr(rÎr8r8r9r%§ s  €ÿz TarFile.utimec Cs< | d¡|jdur|j}d|_|S|j|j ¡kr.|j |jd¡|j d¡s.tdƒ‚d} z|j  |¡}WnÑt yf}z!|j r\|  dd|j|f¡|jt 7_WYd}~q0WYd}~n©d}~wtyž}z-|j rˆ|  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#rYTr$z0x%X: %srz empty filez zlib error: )rårÇrÔržrÄrÇr]rrðr}rurÀr rÏrKrSrsrtrvÚ Exceptionr¡rPr¦r¢rÄrÊrÅ)r„ÚmrðrÎr¡r8r8r9rˆµ sv     ý€   ÿ€   ÿ  ÿ€€ ÿ€ù  þz TarFile.nextc Cs¶ | ¡}d}|dur$z| |¡}Wn tyd}Ynw|d|…}|r,tj |¡}t|ƒD]"}|r=|j|jkrrLr?r$r&r%rˆrârærår8r_r rergr8r8r8r9r�sž ýo]    ü   c& 3 ÿE ÿ ÿ  ÿ þ85!  ?(   rcCsD zt|dƒr t|d�}nt|ƒ}| ¡WdSty!YdSw)Nr])ržTF)r‚rr‰r)r…rÍr8r8r9ry s   ÿrc Cshddl}d}|j|d�}|jdddddd �|jd d td d �|jdd�}|jddddd�|jdddddd�|jdddddd�|jdd dd!d�| ¡}|jr]|jdur]| d"d#¡|j dur¤|j }t |ƒr™t |d$ƒ�}|  ¡t |  ¡tjd%�Wdƒn1s†wY|jr—t d& |¡ƒdSdS| d"d' |¡¡dS|jdurÛ|j}t |ƒrÐt  |d(¡�}|j|jd)�WdƒdS1sÉwYdS| d"d' |¡¡dS|jdu�rRt|jƒd"krñ|jd}tj}nt|jƒd*krþ|j\}}n| d"| ¡¡t |ƒ�rGt  |d(¡�}|j||jd+�Wdƒn 1�s%wY|j�rE|d,k�r9d- |¡} nd. ||¡} t | ƒdSdS| d"d' |¡¡dS|jdu�r°|j d¡} tj | ¡\} } d/d/d0d0d1d1d1d1d2œ} | | v�r|d3| | nd4}|j}t  | |¡�}|D]}| |¡�qŠWdƒn 1�sžwY|j�r²t d5 | ¡ƒdSdSdS)6Nrz3A simple command-line interface for tarfile module.)Ú descriptionz-vz --verboseÚ store_trueFzVerbose output)ÚactionÚdefaultÚhelpz--filterz zFilter for extraction)ÚmetavarÚchoicesrmT)Zrequiredz-lz--listú zShow listing of a tarfile)rnrmz-ez --extractú+)rpz zExtract tarfile into target dir)Únargsrnrmz-cz--create)zzzCreate tarfile from sourcesz-tz--testzTest if a tarfile is validr#z&--filter is only valid for extraction rzr`z{!r} is a tar archive.z{!r} is not a tar archive. rÈ)rr$)r%r rz{!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_argumentrZadd_mutually_exclusive_groupÚ parse_argsr r-ÚexitÚtestrrrçrkrirbrrSr˜rr2r}ÚcurdirZ format_helpr+ZcreateÚpopr%Úsplitextr)rsriÚparserr�Úargsr_r˜ZtfryrdZtar_nameršZextZ compressionsZtar_modeZ tar_filesÚ file_namer8r8r9ÚmainŒ s²  ÿþ  ÿ þ þ ÿ   þÿ "ÿ    ÿ  ÿ ú  õ ÿÿèrÚ__main__rh)nÚversionÚ __author__Ú __credits__Úbuiltinsrr½rir}ràrZrîrµrVr5ÚreÚwarningsrr¢rÚAttributeErrorÚNotImplementedErrorrQrªÚ NameErrorÚ__all__r3rÏrárIrDrFrEr[r+rsr¨r§r]r^r8r«ZCONTTYPErLrKrtrUrWr�r rrrr„r£rvr r“rQrIr¡r…r Úgetfilesystemencodingr:r?rNrTrXr[rlrXrr rrr r rsrtrurKrvrxr�Úobjectr›rÓÚBufferedReaderrërõrörúrrrrr rrr!r#rr4ÚcompilerŽrrrrror8r8r8r9Ús(   ÿ  ÿ ÿ üÿÿú  uh  Jý ;e _ ÿ