grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/20263 Õì2axlã'@svdZdZdZdZdZddlmZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZy ddlZWnek rŒdZYnXy ddlZWnek r²dZYnXeefZyeef7ZWnek rÞYnXdd d d d d dddddddddgZdZdZedZdZdZdZdZ dZ!dZ"dZ#dZ$d Z%d!Z&d"Z'd#Z(d$Z)d%Z*d&Z+d'Z,d(Z-d)Z.d*Z/d+Z0dZ1d,Z2d-Z3e2Z4e"e#e$e%e(e)e*e&e'e+e,e-f Z5e"e#e*e-fZ6e+e,e-fZ7djZ8d.d/d4d5hZ9e:e:e:e;e;e;d6œZnej?ƒZ>d9d:„Z@d;d<„ZAd=d>„ZBd?e4fd@dA„ZCdBdC„ZDdedfdDdE„ZEdFdG„ZFdHdI„ZGGdJd „d eHƒZIGdKd„deIƒZJGdLd „d eIƒZKGdMd „d eIƒZLGdNd„deIƒZMGdOd„deIƒZNGdPdQ„dQeNƒZOGdRdS„dSeNƒZPGdTdU„dUeNƒZQGdVdW„dWeNƒZRGdXdY„dYeNƒZSGdZd[„d[ƒZTGd\d]„d]ƒZUGd^d_„d_eVƒZWGd`da„daeVƒZXGdbdc„dce jYƒZZGddd „d eVƒZ[Gded„deVƒZ\dfd „Z]e\jZdgdh„Z^e_dik�rre^ƒdS)kz0.9.0u"Lars Gustäbel (lars@gustaebel.de)z5$Date: 2011-02-25 17:42:01 +0200 (Fri, 25 Feb 2011) $z?$Id: tarfile.py 88586 2011-02-25 15:42:01Z marc-andre.lemburg $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)ZatimeZctimer(r)r*r'Úntzutf-8cCs(|j||ƒ}|d|…|t|ƒtS)N)ÚencodeÚlenÚNUL)ÚsÚlengthÚencodingÚerrors©r5ú,/opt/alt/python36/lib64/python3.6/tarfile.pyÚstn s r7cCs*|jdƒ}|dkr|d|…}|j||ƒS)Nrr#éÿÿÿÿ)ÚfindÚdecode)r1r3r4Úpr5r5r6Únts¦s  r<c Csª|dd krfd}x0tt|ƒdƒD]}|dK}|||d7}q"W|ddkr¦dt|ƒd| }n@y"t|ddƒ}t|jƒp€d dƒ}Wntk r¤td ƒ‚YnX|S) Nré€éÿr#ééÚasciiÚstrictÚ0zinvalid header)r=r>)Úranger/r<ÚintÚstripÚ ValueErrorÚInvalidHeaderError)r1ÚnÚir5r5r6Únti®s   rKr?cCsÜt|ƒ}d|ko"d|dknrDtd|d|fdƒt}n”|tkrÐd|d |kopd|dknrÐ|dkrŠtdgƒ}ntdgƒ}d||}x6t|dƒD]}|jd|d@ƒ|dL}q®Wntd ƒ‚|S) Nrr?r#z%0*orAr@r=r>zoverflow in number field)rEÚbytesr0rÚ bytearrayrDÚinsertrG)rIÚdigitsÚformatr1rJr5r5r6ÚitnÂs  2   rQcCs0dttjd|ƒƒ}dttjd|ƒƒ}||fS)Nr@Z 148B8x356BZ 148b8x356b)ÚsumÚstructÚ unpack_from)ÚbufZunsigned_chksumZ signed_chksumr5r5r6Ú calc_chksumsßs rVc Csª|pd}|dkrdS|dkr.tj|||ƒdSt||ƒ\}}x8t|ƒD],}|j|ƒ}t|ƒ|krh|dƒ‚|j|ƒqFW|dkr¦|j|ƒ}t|ƒ|krœ|dƒ‚|j|ƒdS)Néirzunexpected end of datai@)ÚshutilÚ copyfileobjÚdivmodrDÚreadr/Úwrite) ÚsrcÚdstr2Ú exceptionÚbufsizeÚblocksÚ remainderÚbrUr5r5r6rYìs$     rYcCs ddl}|jdtdƒtj|ƒS)Nrz$deprecated in favor of stat.filemoder$)ÚwarningsÚwarnÚDeprecationWarningÚstatÚfilemode)Úmoderdr5r5r6rhsrhcCs8ttjddƒ}|dk r(|j|dƒj|ƒ}t|dd�dS)Nr3Úbackslashreplaceú )Úend)ÚgetattrÚsysÚstdoutr.r:Úprint)r1r3r5r5r6Ú _safe_print srqc@s eZdZdS)rN)Ú__name__Ú __module__Ú __qualname__r5r5r5r6rsc@s eZdZdS)r N)rrrsrtr5r5r5r6r sc@s eZdZdS)rN)rrrsrtr5r5r5r6rsc@s eZdZdS)rN)rrrsrtr5r5r5r6rsc@s eZdZdS)r N)rrrsrtr5r5r5r6r sc@s eZdZdS)r N)rrrsrtr5r5r5r6r "sc@s eZdZdS)ÚEmptyHeaderErrorN)rrrsrtr5r5r5r6ru%sruc@s eZdZdS)ÚTruncatedHeaderErrorN)rrrsrtr5r5r5r6rv(srvc@s eZdZdS)ÚEOFHeaderErrorN)rrrsrtr5r5r5r6rw+srwc@s eZdZdS)rHN)rrrsrtr5r5r5r6rH.srHc@s eZdZdS)ÚSubsequentHeaderErrorN)rrrsrtr5r5r5r6rx1srxc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) Ú _LowLevelFilecCsFtjtjtjBtjBdœ|}ttdƒr2|tjO}tj||dƒ|_dS)N)ÚrÚwÚO_BINARYi¶) ÚosÚO_RDONLYÚO_WRONLYÚO_CREATÚO_TRUNCÚhasattrr|rÚfd)ÚselfÚnamerir5r5r6Ú__init__>s   z_LowLevelFile.__init__cCstj|jƒdS)N)r}Úcloserƒ)r„r5r5r6r‡Gsz_LowLevelFile.closecCstj|j|ƒS)N)r}r[rƒ)r„r'r5r5r6r[Jsz_LowLevelFile.readcCstj|j|ƒdS)N)r}r\rƒ)r„r1r5r5r6r\Msz_LowLevelFile.writeN)rrrsrtr†r‡r[r\r5r5r5r6ry8s ryc@speZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z ddd„Z ddd„Z dd„Z dd„ZdS)Ú_Streamc Csäd|_|dkrt||ƒ}d|_|dkr6t|ƒ}|jƒ}|pt|jƒ|jkrL|jj|jd|j…ƒ|j|jd…|_qWdS)N)rUr/r`r”r\)r„r1r5r5r6Z__write½sz_Stream.__writec Cs²|jr dSd|_zŠ|jdkr:|jdkr:|j|jjƒ7_|jdkr˜|jr˜|jj|jƒd|_|jdkr˜|jjtj d|j ƒƒ|jjtj d|j d@ƒƒWd|j s¬|jj ƒXdS)NTr{r�r‹rŒzd|fg}d|_g|_d}|j}xT|D]L\}}||kr~|jj d||dfƒ|jj d||||fƒ||7}||}qZW||jkrÊ|jj d||jdfƒdS)Nrr…FT) r”Úoffsetr'Úpositionrmr…r–Ú map_indexÚmapr¸)r„r”rÂr'Z blockinfoZlastposZrealposr5r5r6r†js(   z_FileInFile.__init__cCsdS)Nr5)r„r5r5r6r®ƒsz_FileInFile.flushcCsdS)NTr5)r„r5r5r6Úreadable†sz_FileInFile.readablecCsdS)NFr5)r„r5r5r6Úwritable‰sz_FileInFile.writablecCs |jjƒS)N)r”Úseekable)r„r5r5r6rÈŒsz_FileInFile.seekablecCs|jS)N)rÃ)r„r5r5r6rµ�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_ENDrG)r„rÃÚwhencer5r5r6r¶”s   z_FileInFile.seekc Cs|dkr|j|j}nt||j|jƒ}d}xà|dk�r xZ|j|j\}}}}||jkob|knrlPq:|jd7_|jt|jƒkr:d|_q:Wt|||jƒ}|rè|jj||j|ƒ|jj|ƒ}t|ƒ|krÞt dƒ‚||7}n |t |7}||8}|j|7_q.W|S)Nr‹rr#zunexpected end of data) r'rÃrËrÅrÄr/r”r¶r[rr0) r„r'rUÚdataÚstartÚstoprÂr2rcr5r5r6r[¤s.      z_FileInFile.readcCs&|jt|ƒƒ}||dt|ƒ…<t|ƒS)N)r[r/)r„rcrUr5r5r6ÚreadintoÃsz_FileInFile.readintocCs d|_dS)NT)r–)r„r5r5r6r‡Èsz_FileInFile.close)N)N)rrrsrtr†r®rÆrÇrÈrµrÉrÊr¶r[rÓr‡r5r5r5r6rÁds  rÁcseZdZ‡fdd„Z‡ZS)Ú ExFileObjectcs&t|j|j|j|jƒ}tƒj|ƒdS)N)rÁr”Ú offset_datar'ÚsparseÚsuperr†)r„ÚtarfileÚtarinfor”)Ú __class__r5r6r†Îs  zExFileObject.__init__)rrrsrtr†Ú __classcell__r5r5)rÚr6rÔÌsrÔc@sŠeZdZdhZdidd„Zdd„Zdd„ZeeeƒZdd„Z dd„Z ee e ƒZ d d!„Z d"d#„Z eed$fd%d&„Zd'd(„Zd)d*„Zd+d,„Zed-d.„ƒZd/d0„Zed1d2„ƒZed3d4„ƒZed5d6„ƒZed7d8„ƒZed9d:„ƒZed;d<„ƒZd=d>„Zd?d@„ZdAdB„Z dCdD„Z!dEdF„Z"dGdH„Z#dIdJ„Z$dKdL„Z%dMdN„Z&dOdP„Z'dQdR„Z(dSdT„Z)dUdV„Z*dWdX„Z+dYdZ„Z,d[d\„Z-d]d^„Z.d_d`„Z/dadb„Z0dcdd„Z1dedf„Z2dgS)jrr…rir)r*r'r(ÚchksumÚtypeÚlinknamer+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…rir)r*r'r(rÜÚREGTYPErÝrÞr+r,rßràrÂrÕrÖrá)r„r…r5r5r6r†ås"zTarInfo.__init__cCs|jS)N)r…)r„r5r5r6Ú_getpathÿszTarInfo._getpathcCs ||_dS)N)r…)r„r…r5r5r6Ú_setpathszTarInfo._setpathcCs|jS)N)rÞ)r„r5r5r6Ú _getlinkpathszTarInfo._getlinkpathcCs ||_dS)N)rÞ)r„rÞr5r5r6Ú _setlinkpathszTarInfo._setlinkpathcCsd|jj|jt|ƒfS)Nz<%s %r at %#x>)rÚrrr…Úid)r„r5r5r6Ú__repr__ szTarInfo.__repr__cCsn|j|jd@|j|j|j|j|j|j|j|j |j |j |j dœ }|dt krj|djdƒ rj|dd7<|S)Niÿ) r…rir)r*r'r(rÜrÝrÞr+r,rßràrÝr…ú/)r…rir)r*r'r(rÜrÝrÞr+r,rßràÚDIRTYPEr¬)r„Úinfor5r5r6Úget_infos  zTarInfo.get_infoÚsurrogateescapecCsT|jƒ}|tkr|j|||ƒS|tkr4|j|||ƒS|tkrH|j||ƒStdƒ‚dS)Nzinvalid format)rîr Úcreate_ustar_headerrÚcreate_gnu_headerrÚcreate_pax_headerrG)r„rPr3r4rír5r5r6Útobuf&s z TarInfo.tobufcCsnt|d<t|dj||ƒƒtkr(tdƒ‚t|dj||ƒƒtkr^|j|d||ƒ\|d<|d<|j|t||ƒS)NÚmagicrÞzlinkname is too longr…Úprefix) Ú POSIX_MAGICr/r.Ú LENGTH_LINKrGÚ LENGTH_NAMEÚ_posix_split_nameÚ_create_headerr )r„rír3r4r5r5r6rð4s zTarInfo.create_ustar_headercCs€t|d<d}t|dj||ƒƒtkr<||j|dt||ƒ7}t|dj||ƒƒtkrl||j|dt||ƒ7}||j|t ||ƒS)Nrôr‹rÞr…) Ú GNU_MAGICr/r.r÷Ú_create_gnu_long_headerÚGNUTYPE_LONGLINKrøÚGNUTYPE_LONGNAMErúr)r„rír3r4rUr5r5r6rñAszTarInfo.create_gnu_headerc Cs4t|d<|jjƒ}x„ddtfddtfddfD]h\}}}||kr@q,y||jd d ƒWn"tk rv||||<w,YnXt||ƒ|kr,||||<q,WxldD]d\}}||kr¸d||<qž||}d|koÚd |dkn �sît|t ƒržt |ƒ||<d||<qžW|�r|j |t |ƒ} nd} | |j |td dƒS)Nrôr…r%rÞr&r+é r,rArBr)r?r*r'é r(rr#r‹r¦)r+r+rÿ)r,r,rÿ©r)r?©r*r?©r'r©r(r)rrrr)röráÚcopyrør÷r.ÚUnicodeEncodeErrorr/Ú isinstanceÚfloatÚstrÚ_create_pax_generic_headerÚXHDTYPErúr ) r„rír3rár…Zhnamer2rOÚvalrUr5r5r6ròOs4  .  zTarInfo.create_pax_headercCs|j|tdƒS)Nzutf-8)r ÚXGLTYPE)Úclsrár5r5r6Úcreate_pax_global_header€sz TarInfo.create_pax_global_headercCs€|jdƒ}xltdt|ƒƒD]R}dj|d|…ƒ}dj||d…ƒ}t|j||ƒƒtkrt|j||ƒƒtkrPqWtdƒ‚||fS)Nrër#zname is too long)ÚsplitrDr/r¹r.Ú LENGTH_PREFIXrørG)r„r…r3r4Z componentsrJrõr5r5r6rù†s zTarInfo._posix_split_namecCsVt|jddƒd||ƒt|jddƒd@d|ƒt|jddƒd|ƒt|jd dƒd|ƒt|jd dƒd |ƒt|jd dƒd |ƒd |jdtƒt|jddƒd||ƒ|jdtƒt|jddƒd||ƒt|jddƒd||ƒt|jddƒd|ƒt|jddƒd|ƒt|jddƒd||ƒg}tjdtdj|ƒƒ}t |t d…ƒd}|dd…t d|dƒ|dd…}|S) Nr…rŠrririÿr?r)r*r'rr(s rÝrÞrôr+rÿr,rßràrõrz%dsr‹ilz%06orAiei”þÿÿi›þÿÿ) r7ÚgetrQrärörSr©r¼r¹rVrL)rírPr3r4ÚpartsrUrÜr5r5r6rú–s&  &zTarInfo._create_headercCs.tt|ƒtƒ\}}|dkr*|t|t7}|S)Nr)rZr/r¼r0)Zpayloadrarbr5r5r6Ú_create_payload²szTarInfo._create_payloadcCsR|j||ƒt}i}d|d<||d<t|ƒ|d<t|d<|j|t||ƒ|j|ƒS)Nz ././@LongLinkr…rÝr'rô)r.r0r/rûrúr r)rr…rÝr3r4rír5r5r6rü¼s zTarInfo._create_gnu_long_headerc Cs:d}x@|jƒD]4\}}y|jddƒWqtk r@d}PYqXqWd}|rV|d7}x |jƒD]”\}}|jdƒ}|r„|j|dƒ}n |jdƒ}t|ƒt|ƒd}d } } x"|tt| ƒƒ} | | krÆP| } q¬W|tt| ƒd ƒd |d |d 7}q`Wi} d| d<|| d<t|ƒ| d<t| d<|j| td dƒ|j |ƒS)NFzutf-8rBTr‹s21 hdrcharset=BINARY rïr¥rrAó ó=ó z././@PaxHeaderr…rÝr'rôr¦) Úitemsr.rr/r rLrörúr r) rrárÝr3ZbinaryÚkeywordÚvalueZrecordsÚlrIr;rír5r5r6r Ís<   * z"TarInfo._create_pax_generic_headerc Cstt|ƒdkrtdƒ‚t|ƒtkr(tdƒ‚|jtƒtkr>tdƒ‚t|dd…ƒ}|t|ƒkrbt 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…||ƒ}|jtk�r†|j jdƒ�r†t|_|jtk�r6d}g}xrtdƒD]f} y0t|||d…ƒ} t||d|d…ƒ} Wntk �rðPYnX|j| | fƒ|d7}�q¤Wt|dƒ} t|dd…ƒ} || | f|_ |j!ƒ�rN|j j"dƒ|_ |�rp|jt#k�rp|d|j |_ |S)Nrz empty headerztruncated headerzend of file headeré”éœz bad checksumrélété|éˆé�ii i)iIiQiYiôrëi‚r±réiâiãiï)$r/rur¼rvÚcountr0rwrKrVrHr<r…rir)r*r'r(rÜrÝrÞr+r,rßràÚAREGTYPEr¬rìÚGNUTYPE_SPARSErDrGr¸ÚboolrâÚisdirÚrstripÚ GNU_TYPES)rrUr3r4rÜÚobjrõr•ÚstructsrJrÂÚnumbytesÚ isextendedÚorigsizer5r5r6ÚfrombufsZ       zTarInfo.frombufcCs8|jjtƒ}|j||j|jƒ}|jjƒt|_|j|ƒS)N) r”r[r¼r0r3r4rµrÂÚ _proc_member)rrØrUr+r5r5r6Ú fromtarfile?s zTarInfo.fromtarfilecCsT|jttfkr|j|ƒS|jtkr,|j|ƒS|jtttfkrF|j |ƒS|j |ƒSdS)N) rÝrþrýÚ _proc_gnulongr&Ú _proc_sparser r ÚSOLARIS_XHDTYPEÚ _proc_paxÚ _proc_builtin)r„rØr5r5r6r1Ts    zTarInfo._proc_membercCsR|jjƒ|_|j}|jƒs$|jtkr4||j|jƒ7}||_|j |j |j |j ƒ|S)N) r”rµrÕÚisregrÝÚSUPPORTED_TYPESÚ_blockr'rÂÚ_apply_pax_inforár3r4)r„rØrÂr5r5r6r7as zTarInfo._proc_builtinc Cs†|jj|j|jƒƒ}y|j|ƒ}Wntk r>tdƒ‚YnX|j|_|jt krft ||j |j ƒ|_ n|jtkr‚t ||j |j ƒ|_|S)Nz missing or bad subsequent header)r”r[r:r'r2r rxrÂrÝrþr<r3r4r…rýrÞ)r„rØrUÚnextr5r5r6r3rs  zTarInfo._proc_gnulongc CsÞ|j\}}}|`xœ|r¬|jjtƒ}d}xvtdƒD]j}y0t|||d…ƒ}t||d|d…ƒ} Wntk rzPYnX|r’| r’|j|| fƒ|d7}q0Wt|dƒ}qW||_ |jj ƒ|_ |j |j |j ƒ|_||_ |S)Nrérr#iø)râr”r[r¼rDrKrGr¸r'rÖrµrÕr:r'rÂ) r„rØr,r.r/rUr•rJrÂr-r5r5r6r4ˆs(    zTarInfo._proc_sparsec Cs0|jj|j|jƒƒ}|jtkr&|j}n |jjƒ}tj d|ƒ}|dk rX|j dƒj dƒ|d<|j dƒ}|dkrr|j }nd}tjdƒ}d}x²|j||ƒ}|s˜P|jƒ\} } t| ƒ} | dkr¼tdƒ‚||jd ƒd|jdƒ| d…} |j| dd|jƒ} | tk�r|j| ||j |jƒ} n|j| dd|jƒ} | || <|| 7}q†Wy|j|ƒ} Wntk �rdtd ƒ‚YnXd |k�r~|j| |ƒnHd |k�r˜|j| ||ƒn.|j d ƒdk�rÆ|j dƒdk�rÆ|j| ||ƒ|jttfk�r,| j ||j |jƒ|j!| _!d|k�r,| j"} | j#ƒ�s| jt$k�r&| | j| jƒ7} | |_!| S)Ns\d+ hdrcharset=([^\n]+)\nr#zutf-8Ú hdrcharsetZBINARYs(\d+) ([^=]+)=rzinvalid headerr$z missing or bad subsequent headerzGNU.sparse.mapzGNU.sparse.sizezGNU.sparse.majorÚ1zGNU.sparse.minorrCr')%r”r[r:r'rÝr rárÚreÚsearchÚgroupr:rr3ÚcompileÚmatchÚgroupsrErHrlrÑÚ_decode_pax_fieldr4ÚPAX_NAME_FIELDSr2r rxÚ_proc_gnusparse_01Ú_proc_gnusparse_00Ú_proc_gnusparse_10r r5r;rÂrÕr8r9)r„rØrUrárDr>r3Zregexr•r2rrr<rÂr5r5r6r6¤sd       $          zTarInfo._proc_paxcCspg}x(tjd|ƒD]}|jt|jdƒƒƒqWg}x(tjd|ƒD]}|jt|jdƒƒƒq@Wtt||ƒƒ|_dS)Ns\d+ GNU.sparse.offset=(\d+)\nr#s\d+ GNU.sparse.numbytes=(\d+)\n)r@Úfinditerr¸rErBÚlistÚziprÖ)r„r<rárUZoffsetsrDr-r5r5r6rI szTarInfo._proc_gnusparse_00cCs@dd„|djdƒDƒ}tt|ddd…|ddd…ƒƒ|_dS)NcSsg|] }t|ƒ‘qSr5)rE)Ú.0Úxr5r5r6ú sz.TarInfo._proc_gnusparse_01..zGNU.sparse.mapú,r$r#)rrLrMrÖ)r„r<rárÖr5r5r6rHszTarInfo._proc_gnusparse_01cCs¬d}g}|jjtƒ}|jddƒ\}}t|ƒ}xJt|ƒ|dkrvd|krV||jjtƒ7}|jddƒ\}}|jt|ƒƒq.W|jjƒ|_t t |ddd…|ddd…ƒƒ|_ dS)Nrr#r$) r”r[r¼rrEr/r¸rµrÕrLrMrÖ)r„r<rárØZfieldsrÖrUZnumberr5r5r6rJs  zTarInfo._proc_gnusparse_10c CsÆx¶|jƒD]ª\}}|dkr(t|d|ƒq |dkrBt|dt|ƒƒq |dkr\t|dt|ƒƒq |tkr |tkr–yt||ƒ}Wntk r”d}YnX|dkr¨|jdƒ}t|||ƒq W|jƒ|_dS)NzGNU.sparse.namer%zGNU.sparse.sizer'zGNU.sparse.realsizerrë) rÚsetattrrEÚ PAX_FIELDSÚPAX_NUMBER_FIELDSrGr)rrá)r„rár3r4rrr5r5r6r;-s"  zTarInfo._apply_pax_infoc Cs.y |j|dƒStk r(|j||ƒSXdS)NrB)r:ÚUnicodeDecodeError)r„rr3Zfallback_encodingZfallback_errorsr5r5r6rFDs zTarInfo._decode_pax_fieldcCs"t|tƒ\}}|r|d7}|tS)Nr#)rZr¼)r„r$rarbr5r5r6r:LszTarInfo._blockcCs |jtkS)N)rÝÚ REGULAR_TYPES)r„r5r5r6r8Usz TarInfo.isregcCs|jƒS)N)r8)r„r5r5r6ÚisfileWszTarInfo.isfilecCs |jtkS)N)rÝrì)r„r5r5r6r(Ysz TarInfo.isdircCs |jtkS)N)rÝÚSYMTYPE)r„r5r5r6Úissym[sz TarInfo.issymcCs |jtkS)N)rÝÚLNKTYPE)r„r5r5r6Úislnk]sz TarInfo.islnkcCs |jtkS)N)rÝÚCHRTYPE)r„r5r5r6Úischr_sz TarInfo.ischrcCs |jtkS)N)rÝÚBLKTYPE)r„r5r5r6Úisblkasz TarInfo.isblkcCs |jtkS)N)rÝÚFIFOTYPE)r„r5r5r6ÚisfifocszTarInfo.isfifocCs |jdk S)N)rÖ)r„r5r5r6ÚissparseeszTarInfo.issparsecCs|jtttfkS)N)rÝr\r^r`)r„r5r5r6Úisdevgsz TarInfo.isdevN)r…rir)r*r'r(rÜrÝrÞr+r,rßràrÂrÕrárÖrØrârã)rŠ)3rrrsrtÚ __slots__r†råræÚpropertyr%rçrèr&rêrîrr rórðrñròÚ classmethodrrùÚ staticmethodrúrrür r0r2r1r7r3r4r6rIrHrJr;rFr:r8rWr(rYr[r]r_rarbrcr5r5r5r6r×s^    1    3 ?  h  c @s°eZdZdZdZdZdZeZe Z dZ e Z eZd[dd„Zedddefd d „ƒZed\d d „ƒZed]dd„ƒZed^dd„ƒZed_dd„ƒZdddddœZdd„Zdd„Zdd„Zdd „Zd`d!d"„Zdadd$œd%d&„Zdbdd'œd(d)„Zdcd*d+„Z dddd-œd.d/„Z!dedd-œd1d2„Z"d3d4„Z#dfd5d6„Z$d7d8„Z%d9d:„Z&d;d<„Z'd=d>„Z(d?d@„Z)dAdB„Z*dCdD„Z+dEdF„Z,dGdH„Z-dIdJ„Z.dgdKdL„Z/dMdN„Z0dhdOdP„Z1dQdR„Z2dSdT„Z3dUdV„Z4dWdX„Z5dYdZ„Z6dS)irrFr#NrzrïcCs°dddddœ}||krtdƒ‚||_|||_|sj|jdkrVtjj|ƒ rVd|_d|_t||jƒ}d |_n@|dkr’t|d ƒr’t |j t t fƒr’|j }t|d ƒr¤|j|_d |_|rºtjj |ƒnd|_ ||_|dk rÔ||_|dk râ||_|dk rð||_|dk �r||_|dk �r||_| |_| dk �r4|jtk�r4| |_ni|_| dk �rJ| |_| dk �rZ| |_| |_d |_g|_d |_|jjƒ|_i|_�yþ|jd k�r¤d|_ |j!ƒ|_ |jdk�r8x†|jj"|jƒy|jj#|ƒ}|jj$|ƒWnTt%k �r|jj"|jƒPYn0t&k �r0}zt't |ƒƒ‚WYdd}~XnX�q²W|jdk�r‚d |_|j�r‚|jj(|jj)ƒƒ}|jj*|ƒ|jt+|ƒ7_Wn&|j�sž|jj,ƒd |_‚YnXdS)NÚrbzr+bÚwbZxb)rzÚar{rOz!mode must be 'r', 'a', 'w' or 'x'rjr{Fr…riTrzrO)rjr{rO)-rGriÚ_moder}r%ÚexistsÚ bltn_openr�r‚rr…r rLÚabspathr”rPrÙÚ dereferenceÚ ignore_zerosr3r4rráÚdebugÚ errorlevelÚ copybufsizer–ÚmembersÚ_loadedrµrÂÚinodesÚ firstmemberr<r¶r2r¸rwr rrrr\r/r‡)r„r…rir”rPrÙrorpr3r4rárqrrrsZmodesÚerUr5r5r6r†…sŠ             $   zTarFile.__init__c sº| r| rtdƒ‚|dkrª‡fdd„}xttˆj|d�D]b}tˆˆj|ƒ}|dk r\|jƒ} y||d|f|ŽSttfk r˜|dk r’|j| ƒw8Yq8Xq8Wtdƒ‚�nd|k�r |jdd ƒ\} }| pÊd} |pÒd }|ˆjkrðtˆˆj|ƒ}n td |ƒ‚||| |f|ŽSd |k�r’|jd d ƒ\} }| �p.d} |�p8d }| dk�rLtdƒ‚t || |||ƒ} yˆ|| | f|Ž} Wn| j ƒ‚YnXd| _ | S|dk�r®ˆj |||f|ŽStdƒ‚dS)Nznothing to openrzúr:*csˆj|dkS)NÚtaropen)Ú OPEN_METH)r“)rr5r6Únot_compressedsz$TarFile.open..not_compressed)Úkeyz%file could not be opened successfullyú:r#r�zunknown compression type %rú|r{zmode must be 'r' or 'w'FrjrOzundiscernible mode)rzry)rzr{)rjr{rO) rGÚsortedr{rmrµrrr¶rrˆr‡r�rz) rr…rir”r`Úkwargsr|r“ÚfuncZ saved_posrhÚstreamrºr5)rr6rôsP%             z TarFile.opencKs |dkrtdƒ‚||||f|ŽS)Nrzrjr{rOz!mode must be 'r', 'a', 'w' or 'x')rzrjr{rO)rG)rr…rir”r�r5r5r6rzOszTarFile.taropenr¤cKsð|d krtdƒ‚yddl}|jWn ttfk rBtdƒ‚YnXy|j||d||ƒ}Wn.tk rŠ|dk r„|dkr„tdƒ‚‚YnXy|j|||f|Ž}WnBtk rÐ|j ƒ|dkrÊtdƒ‚‚Yn|j ƒ‚YnXd |_ |S) Nrzr{rOzmode must be 'r', 'w' or 'x'rzgzip module is not availablercznot a gzip fileF)rzr{rO) rGÚgzipZGzipFiler˜ÚAttributeErrorrr rrzr‡r�)rr…rir”Ú compresslevelr�r„rºr5r5r6ÚgzopenWs2 zTarFile.gzopencKs¶|d krtdƒ‚y ddl}Wntk r8tdƒ‚YnX|j|pD|||d�}y|j|||f|Ž}WnFttfk r–|jƒ|dkr�t dƒ‚‚Yn|jƒ‚YnXd |_ |S) Nrzr{rOzmode must be 'r', 'w' or 'x'rzbz2 module is not available)r†znot a bzip2 fileF)rzr{rO) rGr�r˜rZBZ2Filerzr ÚEOFErrorr‡rr�)rr…rir”r†r�r�rºr5r5r6Úbz2openys(  zTarFile.bz2opencKs¸|d krtdƒ‚y ddl}Wntk r8tdƒ‚YnX|j|pD|||d�}y|j|||f|Ž}WnH|jtfk r˜|jƒ|dkr’t dƒ‚‚Yn|jƒ‚YnXd |_ |S) Nrzr{rOzmode must be 'r', 'w' or 'x'rzlzma module is not available)Úpresetznot an lzma fileF)rzr{rO) rGr¡r˜rZLZMAFilerzr¢rˆr‡rr�)rr…rir”rŠr�r¡rºr5r5r6Úxzopen–s& zTarFile.xzopenrzr‡r‰r‹)r�rŒr�rŽc Csˆ|jr dSd|_z`|jdkrn|jjttdƒ|jtd7_t|jtƒ\}}|dkrn|jjtt|ƒWd|j s‚|jj ƒXdS)NTrjr{rOr$r)rjr{rO) r–rir”r\r0r¼rÂrZÚ RECORDSIZEr�r‡)r„rarbr5r5r6r‡½s z TarFile.closecCs"|j|ƒ}|dkrtd|ƒ‚|S)Nzfilename %r not found)Ú _getmemberÚKeyError)r„r…rÙr5r5r6Ú getmemberÒs  zTarFile.getmembercCs|jƒ|js|jƒ|jS)N)Ú_checkruÚ_loadrt)r„r5r5r6Ú getmembersÝszTarFile.getmemberscCsdd„|jƒDƒS)NcSsg|] }|j‘qSr5)r…)rNrÙr5r5r6rPësz$TarFile.getnames..)r’)r„r5r5r6ÚgetnamesçszTarFile.getnamesc Csp|jdƒ|dk r|j}|dkr$|}tjj|ƒ\}}|jtjdƒ}|jdƒ}|jƒ}||_ |dkrŒt tdƒr€|j r€tj |ƒ}qštj |ƒ}ntj|jƒƒ}d}|j}t j|ƒ�r|j|jf} |j rö|jdkrö| |jkrö||j| kröt} |j| }nt} | d�rx||j| <nht j|ƒ�r"t} nVt j|ƒ�r4t} nDt j|ƒ�rPt} tj|ƒ}n(t j|ƒ�rbt } nt j!|ƒ�rtt"} ndS||_||_#|j$|_%|j&|_'| tk�r¨|j(|_)nd|_)|j*|_+| |_,||_-t.�röyt.j/|j%ƒd|_0Wnt1k �rôYnXt2�r*yt2j3|j'ƒd|_4Wnt1k �r(YnX| t t"fk�rlt tdƒ�rlt tdƒ�rltj5|j6ƒ|_7tj8|j6ƒ|_9|S) NÚawxrëÚlstatrŠr#rÚmajorÚminor):r�r…r}r%Ú splitdriver¦ÚsepÚlstriprÙrØr‚ror•rgÚfstatÚfilenoÚst_modeÚS_ISREGÚst_inoÚst_devÚst_nlinkrvrZräÚS_ISDIRrìÚS_ISFIFOr`ÚS_ISLNKrXÚreadlinkÚS_ISCHRr\ÚS_ISBLKr^riÚst_uidr)Úst_gidr*Úst_sizer'Úst_mtimer(rÝrÞÚpwdÚgetpwuidr+rŽÚgrpZgetgrgidr,r–Úst_rdevrßr—rà) r„r…Úarcnamer”ZdrvrÙZstatresrÞZstmdÚinoderÝr5r5r6Ú gettarinfoís~                 zTarFile.gettarinfoT)rtcCsþ|jƒ|dkr|}xä|D]Ü}|r¦ttj|jƒƒtd|jp@|j|jpJ|jfƒ|j ƒsb|j ƒr|tdd|j |j fƒntd|j ƒtdtj|jƒdd…ƒt|j|jƒr¸dndƒ|rð|jƒrÚtd |jƒ|jƒrðtd |jƒtƒqWdS) Nz%s/%sz%10sz%d,%dz%10dz%d-%02d-%02d %02d:%02d:%02dr°rërŠz-> zlink to )r�rqrgrhrir+r)r,r*r]r_rßràr'rªZ localtimer(r…r(rYrÞr[rp)r„ÚverbosertrÙr5r5r6rLQs* z TarFile.list)Úfilterc Csv|jdƒ|dkr|}|dk rPddl}|jdtdƒ||ƒrP|jdd|ƒdS|jdk r€tjj|ƒ|jkr€|jdd|ƒdS|jd|ƒ|j ||ƒ}|dkr´|jdd|ƒdS|dk rà||ƒ}|dkrà|jdd|ƒdS|j ƒ�rt |d ƒ�}|j ||ƒWdQRXnd|j ƒ�rh|j |ƒ|�rrxHtj|ƒD].}|jtjj||ƒtjj||ƒ|||d ��q4Wn |j |ƒdS) Nr”rzuse the filter argument insteadr$ztarfile: Excluded %rztarfile: Skipped %rr#ztarfile: Unsupported type %rrh)r´)r�rdrerfÚ_dbgr…r}r%rnr²r8rmÚaddfiler(ÚlistdirÚaddr¹) r„r…r°Ú recursiveZexcluder´rdrÙÚfr5r5r6r¸qsB       z TarFile.addcCs¾|jdƒtj|ƒ}|j|j|j|jƒ}|jj|ƒ|jt |ƒ7_|j }|dk r®t ||j|j |d�t |j tƒ\}}|dkrœ|jjtt|ƒ|d7}|j|t7_|jj|ƒdS)Nr”)r`rr#)r�rrórPr3r4r”r\rÂr/rsrYr'rZr¼r0rtr¸)r„rÙr”rUr`rarbr5r5r6r¶®s   zTarFile.addfileÚ.)Ú numeric_ownercCsg}|dkr|}xF|D]>}|jƒr<|j|ƒtj|ƒ}d|_|j|||jƒ |d�qW|jdd„d�|jƒxŠ|D]‚}tjj ||j ƒ}y,|j |||d�|j ||ƒ|j ||ƒWqvtk rö}z$|jdkrÖ‚n|jdd|ƒWYdd}~XqvXqvWdS) NiÀ)Ú set_attrsr¼cSs|jS)N)r…)rjr5r5r6Úßsz$TarFile.extractall..)r})r¼r#z tarfile: %s)r(r¸rriÚextractÚsortÚreverser}r%r¹r…ÚchownÚutimeÚchmodr rrrµ)r„r%rtr¼Z directoriesrÙÚdirpathrxr5r5r6Ú extractallÇs,       zTarFile.extractallrŠcCs |jdƒt|tƒr |j|ƒ}n|}|jƒr>tjj||jƒ|_ y"|j |tjj||j ƒ||d�Wn¦t k rÆ}zJ|j dkr€‚n6|jdkrž|jdd|jƒn|jdd|j|jfƒWYdd}~XnBtk �r}z$|j dkræ‚n|jdd|ƒWYdd}~XnXdS)Nrz)r½r¼rr#z tarfile: %sztarfile: %s %r)r�rr r�r[r}r%r¹rÞrãÚ_extract_memberr…r rrÚfilenamerµÚstrerrorr )r„Úmemberr%r½r¼rÙrxr5r5r6r¿ïs(      ( zTarFile.extractcCs‚|jdƒt|tƒr |j|ƒ}n|}|jƒs6|jtkrB|j||ƒS|jƒsR|j ƒrzt|j t ƒrht dƒ‚q~|j |j|ƒƒSndSdS)Nrzz'cannot extract (sym)link as file object)r�rr r�r8rÝr9Ú fileobjectr[rYr”rˆr Ú extractfileÚ_find_link_target)r„rÊrÙr5r5r6rÌs      zTarFile.extractfilecCsV|jdƒ}|jdtjƒ}tjj|ƒ}|r@tjj|ƒ r@tj|ƒ|jƒsP|j ƒrj|j dd|j |j fƒn|j d|j ƒ|j ƒrŽ|j||ƒnŽ|jƒr¤|j||ƒnx|jƒrº|j||ƒnb|jƒsÊ|jƒrØ|j||ƒnD|jƒsè|j ƒrö|j||ƒn&|jtk�r|j||ƒn |j||ƒ|�rR|j|||ƒ|j ƒ�sR|j||ƒ|j||ƒdS)Nrër#z%s -> %s)r)r¦r}r™r%ÚdirnamerlÚmakedirsr[rYrµr…rÞr8Úmakefiler(ÚmakedirraÚmakefifor]r_ÚmakedevÚmakelinkrÝr9Ú makeunknownrÂrÄrÃ)r„rÙÚ targetpathr½r¼Z upperdirsr5r5r6rÇ4s4       zTarFile._extract_memberc Cs*ytj|dƒWntk r$YnXdS)NiÀ)r}ÚmkdirÚFileExistsError)r„rÙrÖr5r5r6rÑeszTarFile.makedircCs’|j}|j|jƒ|j}t|dƒ�f}|jdk rrx,|jD]"\}}|j|ƒt|||t|ƒq6W|j|jƒ|j ƒnt|||jt|ƒWdQRXdS)Nri) r”r¶rÕrsrmrÖrYrr'Útruncate)r„rÙrÖÚsourcer`ÚtargetrÂr'r5r5r6rÐos      zTarFile.makefilecCs"|j||ƒ|jdd|jƒdS)Nr#z9tarfile: Unknown file type %r, extracted as regular file.)rÐrµrÝ)r„rÙrÖr5r5r6rÕs zTarFile.makeunknowncCs"ttdƒrtj|ƒntdƒ‚dS)NÚmkfifozfifo not supported by system)r‚r}rÜr )r„rÙrÖr5r5r6rÒ‡s  zTarFile.makefifocCsbttdƒ sttdƒ r tdƒ‚|j}|jƒr:|tjO}n |tjO}tj||tj |j |j ƒƒdS)NÚmknodrÓz'special devices not supported by system) r‚r}r rir_rgÚS_IFBLKÚS_IFCHRrÝrÓrßrà)r„rÙrÖrir5r5r6rÓ�s  zTarFile.makedevcCsšyL|jƒrtj|j|ƒn0tjj|jƒr8tj|j|ƒn|j|j |ƒ|ƒWnHt k r”y|j|j |ƒ|ƒWnt k rŽt dƒ‚YnXYnXdS)Nz%unable to resolve link inside archive) rYr}ÚsymlinkrÞr%rlrãÚlinkrÇrÍÚsymlink_exceptionrŽr )r„rÙrÖr5r5r6rÔžs    zTarFile.makelinkcCsØttdƒrÔtjƒdkrÔ|j}|j}|s‚ytrttdƒr:ytj||jƒWntk r8tdƒ‚YnXdS)NrÄzcould not change mode)r‚r}rÄrir r )r„rÙrÖr5r5r6rÄÒs  z TarFile.chmodc CsHttdƒsdSytj||j|jfƒWntk rBtdƒ‚YnXdS)NrÃz"could not change modification time)r‚r}rÃr(r r )r„rÙrÖr5r5r6rÃÛs  z TarFile.utimecCsæ|jdƒ|jdk r$|j}d|_|S|j|jjƒkrZ|jj|jdƒ|jjdƒsZtdƒ‚d}�xby|jj |ƒ}W�nHt k rÂ}z2|j r²|j dd|j|fƒ|jt 7_wbWYdd}~Xnütk �r,}zN|j �r|j dd|j|fƒ|jt 7_wbn|jdk�rtt|ƒƒ‚WYdd}~Xn’tk �rT|jdk�rPtdƒ‚Ynjtk �rŽ}z|jdk�r~tt|ƒƒ‚WYdd}~Xn0tk �r¼}ztt|ƒƒ‚WYdd}~XnXPqbW|dk �rÜ|jj|ƒnd|_|S) NZrar#zunexpected end of datar$z0x%X: %srz empty fileT)r�rwrÂr”rµr¶r[rrÙr2rwrprµr¼rHr rurvrxrtr¸ru)r„ÚmrÙrxr5r5r6r<æsL        z TarFile.nextcCsn|jƒ}|dk r"|d|j|ƒ…}|r2tjj|ƒ}x6t|ƒD]*}|rTtjj|jƒ}n|j}||kr<|SqzShow listing of a tarfile)Úmetavarrûz-ez --extractú+ú zExtract tarfile into target dir)Únargsrýrûz-cz--createúúzCreate tarfile from sourcesz-tz--testzTest if a tarfile is validrz)rðz{!r} is a tar archive.r#z{!r} is not a tar archive. zr:*)r³r$)r%r»z{!r} file is extracted.z+{!r} file is extracted into {!r} directory.rŒrŽr�)z.gzz.tgzz.xzz.txzz.bz2z.tbzz.tbz2z.tb2zw:r{z{!r} file created.)rürÿ)rr)ÚargparseÚArgumentParserÚ add_argumentÚadd_mutually_exclusive_groupÚ parse_argsZtestrrr’rprnrñr³rPÚexitrLrr¿r/r}ÚcurdirÚ format_helprÆZcreateÚpopr%Úsplitextr¸)rr÷ÚparserrBÚargsr]r�Ztfr róZtar_nameÚ_ZextZ compressionsZtar_modeZ tar_filesÚ file_namer5r5r6Úmain� sˆ                rÚ__main__)r%r&r'r(r)r*r+r,)`ÚversionÚ __author__Z__date__Z __cvsid__Ú __credits__Úbuiltinsrrmrnr}rÉrXrgrªrSrr@r¬r˜r®r…ÚNotImplementedErrorrâr Ú NameErrorÚ__all__r0r¼rŒrûrörør÷rrär%rZrXr\r^rìr`ZCONTTYPErþrýr&r r r5r rrrr9rVr*rSrGrrErTr…r Úgetfilesystemencodingr7r<rKrQrVrYrhrqÚ Exceptionrr rrr r rurvrwrHrxryrˆÚobjectr‘rÁÚBufferedReaderrÔrrrrrrr5r5r5r6Ú sø         wh , Z