Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325
3 N”ªjù¯ã'@s6dZdZdZdZdZddlmZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZy ddlZWnek r”dZYnXy ddlZWnek rºdZYnXeefZyeef7ZWnek ræYnXdd d d d d dddddddddgZdZdZedZdZdZdZ dZ!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*Z0d+Z1dZ2d,Z3d-Z4e3Z5e#e$e%e&e)e*e+e'e(e,e-e.f Z6e#e$e+e.fZ7e,e-e.fZ8dƒZ9d.d/d4d5hZ:e;e;e;ed7k�ràd8Z?nej@ƒZ?d9d:„ZAd;d<„ZBd=d>„ZCd?e5fd@dA„ZDdBdC„ZEdedfdDdE„ZFdFdG„ZGdHdI„ZHGdJd „d eIƒZJGdKd„deJƒZKGdLd „d eJƒZLGdMd „d eJƒZMGdNd„deJƒZNGdOd„deJƒZOGdPdQ„dQeOƒZPGdRdS„dSeOƒZQGdTdU„dUeOƒZRGdVdW„dWeOƒZSGdXdY„dYeOƒZTGdZd[„d[ƒZUGd\d]„d]ƒZVGd^d_„d_eWƒZXGd`da„daeWƒZYGdbdc„dce jZƒZ[ej\ddƒZ]Gdedf„dfeJƒZ^Gdgdh„dhe^ƒZ_Gdidj„dje^ƒZ`Gdkdl„dle^ƒZaGdmdn„dne^ƒZbGdodp„dpe^ƒZcGdqdr„dre^ƒZde^eeKfZed„dtdu„Zfdvdw„Zgdxdy„Zhdzd{„Ziegeheid|œZjeWƒZkGd}d „d eWƒZlGd~d„deWƒZmdd „ZnemjZd€d�„Zoepd‚k�r2eoƒdS)…z0.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-8cCs8|dkrtdƒ‚|j||ƒ}|d|…|t|ƒtS)Nzmetadata cannot contain None)Ú ValueErrorÚencodeÚlenÚNUL)ÚsÚlengthÚencodingÚerrors©r6ú/usr/lib64/python3.6/tarfile.pyÚstn¢s r8cCs*|jdƒ}|dkr|d|…}|j||ƒS)Nrr#éÿÿÿÿ)ÚfindÚdecode)r2r4r5Úpr6r6r7Ú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?)Úranger0r=ÚintÚstripr.ÚInvalidHeaderError)r2ÚnÚir6r6r7Ú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*orBrAr>r?zoverflow in number field)rFÚbytesr1rÚ bytearrayrEÚinsertr.)rIÚdigitsÚformatr2rJr6r6r7ÚitnÆs  2   rQcCs0dttjd|ƒƒ}dttjd|ƒƒ}||fS)NrAZ 148B8x356BZ 148b8x356b)ÚsumÚstructZ unpack_from)ÚbufZunsigned_chksumZ signed_chksumr6r6r7Ú calc_chksumsãs rUc 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ÚdivmodrEÚreadr0Úwrite) ÚsrcÚdstr3Ú exceptionÚbufsizeÚblocksÚ remainderÚbrTr6r6r7rXðs$     rXcCs ddl}|jdtdƒtj|ƒS)Nrz$deprecated in favor of stat.filemoder$)ÚwarningsÚwarnÚDeprecationWarningÚstatÚfilemode)Úmodercr6r6r7rg srgcCs8ttjddƒ}|dk r(|j|dƒj|ƒ}t|dd�dS)Nr4Úbackslashreplaceú )Úend)ÚgetattrÚsysÚstdoutr/r;Úprint)r2r4r6r6r7Ú _safe_printsrpc@s eZdZdS)rN)Ú__name__Ú __module__Ú __qualname__r6r6r6r7rsc@s eZdZdS)r N)rqrrrsr6r6r6r7r sc@s eZdZdS)rN)rqrrrsr6r6r6r7rsc@s eZdZdS)rN)rqrrrsr6r6r6r7r sc@s eZdZdS)r N)rqrrrsr6r6r6r7r #sc@s eZdZdS)r N)rqrrrsr6r6r6r7r &sc@s eZdZdS)ÚEmptyHeaderErrorN)rqrrrsr6r6r6r7rt)srtc@s eZdZdS)ÚTruncatedHeaderErrorN)rqrrrsr6r6r6r7ru,sruc@s eZdZdS)ÚEOFHeaderErrorN)rqrrrsr6r6r6r7rv/srvc@s eZdZdS)rHN)rqrrrsr6r6r6r7rH2srHc@s eZdZdS)ÚSubsequentHeaderErrorN)rqrrrsr6r6r6r7rw5srwc@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Únamerhr6r6r7Ú__init__Bs   z_LowLevelFile.__init__cCstj|jƒdS)N)r|Úcloser‚)rƒr6r6r7r†Ksz_LowLevelFile.closecCstj|j|ƒS)N)r|rZr‚)rƒr'r6r6r7rZNsz_LowLevelFile.readcCstj|j|ƒdS)N)r|r[r‚)rƒr2r6r6r7r[Qsz_LowLevelFile.writeN)rqrrrsr…r†rZr[r6r6r6r7rx<s rxc@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)rTr0r_r“r[)rƒr2r6r6r7Z__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)NTrzrŽ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'Úpositionrlr„r•Ú map_indexÚmapr¸)rƒr“rÂr'Z blockinfoZlastposZrealposr6r6r7r…ps(   z_FileInFile.__init__cCsdS)Nr6)rƒr6r6r7r­‰sz_FileInFile.flushcCsdS)NTr6)rƒr6r6r7ÚreadableŒsz_FileInFile.readablecCsdS)NFr6)rƒr6r6r7Úwritable�sz_FileInFile.writablecCs |jjƒS)N)r“Úseekable)rƒr6r6r7rÈ’sz_FileInFile.seekablecCs|jS)N)rÃ)rƒr6r6r7r´•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_ENDr.)rƒrÃÚwhencer6r6r7r¶š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Är0r“r¶rZrr1) rƒr'rTrµÚstartÚstoprÂr3rbr6r6r7rZªs.      z_FileInFile.readcCs&|jt|ƒƒ}||dt|ƒ…<t|ƒS)N)rZr0)rƒrbrTr6r6r7ÚreadintoÉsz_FileInFile.readintocCs d|_dS)NT)r•)rƒr6r6r7r†Îsz_FileInFile.close)N)N)rqrrrsr…r­rÆrÇrÈr´rÉrÊr¶rZrÒr†r6r6r6r7rÁjs  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__r6r7r…Ôs  zExFileObject.__init__)rqrrrsr…Ú __classcell__r6r6)rÙr7rÓÒsrÓs([0-9]{1,20}) c@s eZdZdS)Ú FilterErrorN)rqrrrsr6r6r6r7rÛâsrÛcseZdZ‡fdd„Z‡ZS)ÚAbsolutePathErrorcs ||_tƒjd|j›d�ƒdS)Nzmember z has an absolute path)rØrÖr…r„)rƒrØ)rÙr6r7r…æszAbsolutePathError.__init__)rqrrrsr…rÚr6r6)rÙr7rÜåsrÜcseZdZ‡fdd„Z‡ZS)ÚOutsideDestinationErrorcs.||_||_tƒj|j›d|›d�dƒdS)Nz would be extracted to z, z which is outside the destination)rØÚ_pathrÖr…r„)rƒrØr%)rÙr6r7r…ësz OutsideDestinationError.__init__)rqrrrsr…rÚr6r6)rÙr7rÝêsrÝcseZdZ‡fdd„Z‡ZS)ÚSpecialFileErrorcs||_tƒj|j›d�ƒdS)Nz is a special file)rØrÖr…r„)rƒrØ)rÙr6r7r…òszSpecialFileError.__init__)rqrrrsr…rÚr6r6)rÙr7rßñsrßcseZdZ‡fdd„Z‡ZS)ÚAbsoluteLinkErrorcs||_tƒj|j›d�ƒdS)Nz is a link to an absolute path)rØrÖr…r„)rƒrØ)rÙr6r7r…÷szAbsoluteLinkError.__init__)rqrrrsr…rÚr6r6)rÙr7ràösràcseZdZ‡fdd„Z‡ZS)ÚLinkOutsideDestinationErrorcs.||_||_tƒj|j›d|›d�dƒdS)Nz would link to z, z which is outside the destination)rØrÞrÖr…r„)rƒrØr%)rÙr6r7r…üsz$LinkOutsideDestinationError.__init__)rqrrrsr…rÚr6r6)rÙr7ráûsrácseZdZ‡fdd„Z‡ZS)ÚLinkFallbackErrorcs2||_||_tƒjd|j›d�d|›d�ƒdS)Nzlink z would be extracted as a zcopy of z, which was rejected)rØrÞrÖr…r„)rƒrØr%)rÙr6r7r…szLinkFallbackError.__init__)rqrrrsr…rÚr6r6)rÙr7râsrâTcCs$i}|j}tjj|tjjd�}|jdtjfƒrH|jjdtjƒ}|d<tjj|ƒr\t |ƒ‚tjjtjj ||ƒtjjd�}tjj ||gƒ|kr˜t ||ƒ‚|j }|dk �r|d@}|�rþ|jƒsÆ|jƒrà|d@sÖ|dM}|dO}n|jƒsð|jƒröd}nt|ƒ‚||j k�r||d<|�r |jdk �r,d|d <|jdk �r@d|d <|jdk �rTd|d <|jdk �rhd|d <|jƒ�s||jƒ�r tjj|jƒ�r”t|ƒ‚tjj|jƒ}||jk�r¶||d <|jƒ�rÜtjj |tjj|ƒ|jƒ}ntjj ||jƒ}tjj|tjjd�}tjj ||gƒ|k�r t||ƒ‚|S)N)rCú/r„iíé@éIi€rhr)r*r+r,Úlinknamei¶ÿÿÿ)r„r|r%ÚrealpathÚ ALLOW_MISSINGrÀÚsepÚlstripÚisabsrÜr¹Ú commonpathrÝrhÚisregÚislnkÚisdirÚissymrßr)r*r+r,ræràÚnormpathÚdirnamerá)ÚmemberÚ dest_pathZfor_dataÚ new_attrsr„Z target_pathrhZ normalizedr6r6r7Ú_get_filtered_attrssd                röcCs|S)Nr6)rórôr6r6r7Úfully_trusted_filterRsr÷cCs(t||dƒ}|r$|jf|ddi—ŽS|S)NFÚdeep)rör¥)rórôrõr6r6r7Ú tar_filterUs rùcCs(t||dƒ}|r$|jf|ddi—ŽS|S)NTrøF)rör¥)rórôrõr6r6r7Ú data_filter[s rú)Z fully_trustedrŽrµc@sÎeZdZdqZdrdd„Zdd„Zdd„ZeeeƒZdd„Z dd„Z ee e ƒZ d d!„Z e e e e e e e e d"e d#œ d$d%„Zd&d'„Zeed(fd)d*„Zd+d,„Zd-d.„Zd/d0„Zed1d2„ƒZd3d4„Zed5d6„ƒZed7d8„ƒZed9d:„ƒZed;d<„ƒZed=d>„ƒZed"d?œd@dA„ƒZedBdC„ƒZ ed"d?œ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„Z2dhdi„Z3djdk„Z4dldm„Z5dndo„Z6dpS)srr„rhr)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„rhr)r*r'r(rûÚREGTYPErürær+r,rýrþrÂrÔrÕrÿ)rƒr„r6r6r7r…|s"zTarInfo.__init__cCs|jS)N)r„)rƒr6r6r7Ú_getpath–szTarInfo._getpathcCs ||_dS)N)r„)rƒr„r6r6r7Ú_setpath˜szTarInfo._setpathcCs|jS)N)ræ)rƒr6r6r7Ú _getlinkpathœszTarInfo._getlinkpathcCs ||_dS)N)ræ)rƒrær6r6r7Ú _setlinkpathžszTarInfo._setlinkpathcCsd|jj|jt|ƒfS)Nz<%s %r at %#x>)rÙrqr„Úid)rƒr6r6r7Ú__repr__¢szTarInfo.__repr__T) r„r(rhrær)r*r+r,røÚ_KEEPc CsŽ| rtj|ƒ} n tj|ƒ} || k r(|| _|| k r6|| _|| k rD|| _|| k rR|| _|| k r`|| _|| k rn|| _|| k r||| _|| k rŠ|| _ | S)N) ÚcopyÚdeepcopyr„r(rhrær)r*r+r,) rƒr„r(rhrær)r*r+r,rør Úresultr6r6r7r¥¥s(  zTarInfo.replacecCs‚|jdkrd}n |jd@}|j||j|j|j|j|j|j|j|j |j |j |j dœ }|dt kr~|djdƒ r~|dd7<|S)Niÿ) r„rhr)r*r'r(rûrürær+r,rýrþrür„rã)rhr„r)r*r'r(rûrürær+r,rýrþÚDIRTYPEr«)rƒrhÚinfor6r6r7Úget_infoÁs&   zTarInfo.get_infoÚsurrogateescapecCs~|jƒ}x(|jƒD]\}}|dkrtd|ƒ‚qW|tkrH|j|||ƒS|tkr^|j|||ƒS|tkrr|j||ƒStdƒ‚dS)Nz%s may not be Nonezinvalid format) rÚitemsr.r Úcreate_ustar_headerrÚcreate_gnu_headerrÚcreate_pax_header)rƒrPr4r5rr„Úvaluer6r6r7Ú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_MAGICr0r/Ú LENGTH_LINKr.Ú LENGTH_NAMEÚ_posix_split_nameÚ_create_headerr )rƒrr4r5r6r6r7rîs zTarInfo.create_ustar_headercCs€t|d<d}t|dj||ƒƒtkr<||j|dt||ƒ7}t|dj||ƒƒtkrl||j|dt||ƒ7}||j|t ||ƒS)NrrŠrær„) Ú GNU_MAGICr0r/rÚ_create_gnu_long_headerÚGNUTYPE_LONGLINKrÚGNUTYPE_LONGNAMErr)rƒrr4r5rTr6r6r7rûszTarInfo.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)Nrr„r%rær&r+é r,rBrCr)r@r*r'é r(rr#rŠr¥)r+r+r")r,r,r"©r)r@©r*r@©r'r#©r(r#)r$r%r&r')rrÿr rrr/ÚUnicodeEncodeErrorr0Ú isinstanceÚfloatÚstrÚ_create_pax_generic_headerÚXHDTYPErr ) rƒrr4rÿr„Zhnamer3rOÚvalrTr6r6r7r s4  .  zTarInfo.create_pax_headercCs|j|tdƒS)Nzutf-8)r,ÚXGLTYPE)Úclsrÿr6r6r7Ú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)ÚsplitrEr0r¹r/Ú LENGTH_PREFIXrr.)rƒr„r4r5Z componentsrJrr6r6r7r@s zTarInfo._posix_split_namec CsÆ|jdƒttfk}|r@t|jddƒd|ƒ}t|jddƒd|ƒ}ntdd||ƒ}tdd||ƒ}|jdtƒ}|dkrxtdƒ‚t|jddƒd ||ƒt|jd dƒd @d|ƒt|jd dƒd|ƒt|jd dƒd|ƒt|jddƒd|ƒt|jddƒd|ƒd|t|jddƒd ||ƒ|jdtƒt|jddƒd||ƒt|jddƒd||ƒt|jddƒd|ƒt|jddƒd|ƒt|jddƒd||ƒg}tj dt dj |ƒƒ} t | t d…ƒd} | dd…t d| dƒ| d d…} | S)!Nrürýrr@rþr‰zTarInfo.type must not be Noner„rrhiÿr)r*r'r#r(s rærr+r"r,rrz%dsrŠilz%06orBiei”þÿÿi›þÿÿ)ÚgetÚCHRTYPEÚBLKTYPErQr8rr.rrSr¨r¼r¹rUrL) rrPr4r5Zhas_device_fieldsrýrþZfiletypeÚpartsrTrûr6r6r7rPs8  &zTarInfo._create_headercCs.tt|ƒtƒ\}}|dkr*|t|t7}|S)Nr)rYr0r¼r1)Zpayloadr`rar6r6r7Ú_create_payloadzszTarInfo._create_payloadcCsR|j||ƒt}i}d|d<||d<t|ƒ|d<t|d<|j|t||ƒ|j|ƒS)Nz ././@LongLinkr„rür'r)r/r1r0rrr r8)r0r„rür4r5rr6r6r7r„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-8rCTrŠs21 hdrcharset=BINARY rr¤rrBó ó=ó z././@PaxHeaderr„rür'rr¥) rr/r(r0r+rLrrr r8) r0rÿrür4ZbinaryÚkeywordrZrecordsÚlrIr<rr6r6r7r,•s<   * z"TarInfo._create_pax_generic_headercCs|j|||ƒS)N)Ú_frombuf)r0rTr4r5r6r6r7ÚfrombufÈszTarInfo.frombuf)Údircheckc Cszt|ƒ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…||ƒ}|�rŒ|jtk�rŒ|j jdƒ�rŒt|_|jtk�rÑsZ        zTarInfo._frombufcCs |j|ƒS)N)Ú _fromtarfile)r0r×r6r6r7Ú fromtarfileszTarInfo.fromtarfilecCs<|jjtƒ}|j||j|j|d�}|jjƒt|_|j|ƒS)N)r@) r“rZr¼r>r4r5r´rÂÚ _proc_member)r0r×r@rTrOr6r6r7rTs zTarInfo._fromtarfilecCsT|jttfkr|j|ƒS|jtkr,|j|ƒS|jtttfkrF|j |ƒS|j |ƒSdS)N) rür!r Ú _proc_gnulongrKÚ _proc_sparser-r/ÚSOLARIS_XHDTYPEÚ _proc_paxÚ _proc_builtin)rƒr×r6r6r7rV1s    zTarInfo._proc_membercCsR|jjƒ|_|j}|jƒs$|jtkr4||j|jƒ7}||_|j |j |j |j ƒ|S)N) r“r´rÔrírüÚSUPPORTED_TYPESÚ_blockr'rÂÚ_apply_pax_inforÿr4r5)rƒr×rÂr6r6r7r[>s zTarInfo._proc_builtinc CsŠ|jj|j|jƒƒ}y|j|dd�}Wntk rBtdƒ‚YnX|j|_|jt krjt ||j |j ƒ|_ n|jtkr†t ||j |j ƒ|_|S)NF)r@z missing or bad subsequent header)r“rZr]r'rTr rwrÂrür!r=r4r5r„r ræ)rƒr×rTÚnextr6r6r7rWOs  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ér#rHiø)rr“rZr¼rErKr.r¸rLrÕr´rÔr]r'rÂ) rƒr×rPrRrSrTr”rJrÂrQr6r6r7rXes(    zTarInfo._proc_sparsec CsÚ|jj|j|jƒƒ}|jtkr&|j}n |jjƒ}d}d}g}�x0t|ƒ|koV||dk�rnt j ||ƒ}|srt dƒ‚yt |j dƒƒ}Wntk r t dƒ‚YnX|dkr²t dƒ‚||t|ƒkrÊt dƒ‚|jdƒ|d} ||jdƒd| …} | jdƒ\} } } | �s"| dk�s"|| dk�r*t dƒ‚|j|| | fƒ| dk�rd|dk�rd| dk�r`|j}nd }||7}q@W|dk�r~d }x`|D]X\}} } |j| d d |jƒ}|tk�rÀ|j| ||j|jƒ}n|j| d d |jƒ}|||<�q„Wy|j|d d �}Wntk �rtd ƒ‚YnXd |k�r*|j||ƒnFd|k�rB|j||ƒn.|jdƒdk�rp|jdƒdk�rp|j|||ƒ|jttfk�rÖ|j ||j|jƒ|j!|_!d|k�rÖ|j"}|j#ƒ�sÀ|jt$k�rÐ||j|jƒ7}||_!|S)Nrzinvalid headerr#ér:r½s hdrcharsetsBINARYzutf-8F)r@z missing or bad subsequent headerzGNU.sparse.mapzGNU.sparse.sizezGNU.sparse.majorÚ1zGNU.sparse.minorrDr')%r“rZr]r'rür/rÿr r0Ú_header_length_prefix_reÚmatchrHrFÚgroupr.rÐrkÚ partitionr¸r4Ú_decode_pax_fieldr5ÚPAX_NAME_FIELDSrTr rwÚ_proc_gnusparse_01Ú_proc_gnusparse_00r4Ú_proc_gnusparse_10r-rYr^rÂrÔrír\)rƒr×rTrÿr”r4Ú raw_headersrdr3Zheader_value_end_offsetZkeyword_and_valueZ raw_keywordZequalsZ raw_valuer<rr_rÂr6r6r7rZ�sx                 zTarInfo._proc_paxc Csªg}g}xŒ|D]„\}}}|dkrVy|jt|jƒƒƒWq’tk rRtdƒ‚Yq’Xq|dkry|jt|jƒƒƒWqtk r�tdƒ‚YqXqWtt||ƒƒ|_dS)NsGNU.sparse.offsetzinvalid headersGNU.sparse.numbytes)r¸rFr;r.rHÚlistÚziprÕ)rƒr_rlZoffsetsrQÚ_r<rr6r6r7rjûszTarInfo._proc_gnusparse_00cCs@dd„|djdƒDƒ}tt|ddd…|ddd…ƒƒ|_dS)NcSsg|] }t|ƒ‘qSr6)rF)Ú.0Úxr6r6r7ú sz.TarInfo._proc_gnusparse_01..zGNU.sparse.mapú,r$r#)r2rmrnrÕ)rƒr_rÿrÕr6r6r7riszTarInfo._proc_gnusparse_01cCs¬d}g}|jjtƒ}|jddƒ\}}t|ƒ}xJt|ƒ|dkrvd|krV||jjtƒ7}|jddƒ\}}|jt|ƒƒq.W|jjƒ|_t t |ddd…|ddd…ƒƒ|_ dS)Nr;r#r$) r“rZr¼r2rFr0r¸r´rÔrmrnrÕ)rƒr_rÿr×ZfieldsrÕrTZnumberr6r6r7rks  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ÚsetattrrFÚ PAX_FIELDSÚPAX_NUMBER_FIELDSr.rMr rÿ)rƒrÿr4r5r<rr6r6r7r^%s"  zTarInfo._apply_pax_infoc Cs.y |j|dƒStk r(|j||ƒSXdS)NrC)r;ÚUnicodeDecodeError)rƒrr4Zfallback_encodingZfallback_errorsr6r6r7rg<s zTarInfo._decode_pax_fieldcCs2|dkrtdƒ‚t|tƒ\}}|r*|d7}|tS)Nrzinvalid offsetr#)rHrYr¼)rƒrIr`rar6r6r7r]Ds zTarInfo._blockcCs |jtkS)N)rüÚ REGULAR_TYPES)rƒr6r6r7ríPsz TarInfo.isregcCs|jƒS)N)rí)rƒr6r6r7ÚisfileRszTarInfo.isfilecCs |jtkS)N)rür )rƒr6r6r7rïTsz TarInfo.isdircCs |jtkS)N)rüÚSYMTYPE)rƒr6r6r7rðVsz TarInfo.issymcCs |jtkS)N)rüÚLNKTYPE)rƒr6r6r7rîXsz TarInfo.islnkcCs |jtkS)N)rür5)rƒr6r6r7ÚischrZsz TarInfo.ischrcCs |jtkS)N)rür6)rƒr6r6r7Úisblk\sz TarInfo.isblkcCs |jtkS)N)rüÚFIFOTYPE)rƒr6r6r7Úisfifo^szTarInfo.isfifocCs |jdk S)N)rÕ)rƒr6r6r7Úissparse`szTarInfo.issparsecCs|jtttfkS)N)rür5r6r~)rƒr6r6r7Úisdevbsz TarInfo.isdevN)r„rhr)r*r'r(rûrürær+r,rýrþrÂrÔrÿrÕr×rr)r‰)7rqrrrsÚ __slots__r…rrÚpropertyr%rrr&rr r¥rrr rrrrÚ classmethodr1rÚ staticmethodrr8rr,r?r>rUrTrVr[rWrXrZrjrirkr^rgr]ríryrïrðrîr|r}rr€r�r6r6r6r7rnsl    1  *  3 C  z c @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#NryrcCs°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)ryÚarzrqz!mode must be 'r', 'a', 'w' or 'x'rˆrzFr„rhTryrq)rˆrzrq)-r.rhÚ_moder|r%ÚexistsÚ bltn_openr�r�r)r„r+rLÚabspathr“rPrØÚ dereferenceÚ ignore_zerosr4r5rrÿÚdebugÚ errorlevelÚ copybufsizer•ÚmembersÚ_loadedr´rÂÚinodesÚ firstmemberr_r¶rUr¸rvr rr1r r[r0r†)rƒr„rhr“rPrØr�rŽr4r5rÿr�r�r‘ZmodesÚerTr6r6r7r…‚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 openryúr:*csˆj|dkS)NÚtaropen)Ú OPEN_METH)r’)r0r6r7Únot_compressedsz$TarFile.open..not_compressed)Úkeyz%file could not be opened successfullyú:r#rŽzunknown compression type %rú|rzzmode must be 'r' or 'w'Frˆrqzundiscernible mode)ryr—)ryrz)rˆrzrq) r.Úsortedr™rlr´rrr¶r2r‡r†r�r˜) r0r„rhr“r_Úkwargsršr’ÚfuncZ saved_posrgÚstreamrºr6)r0r7rñsP%             z TarFile.opencKs |dkrtdƒ‚||||f|ŽS)Nryrˆrzrqz!mode must be 'r', 'a', 'w' or 'x')ryrˆrzrq)r.)r0r„rhr“rŸr6r6r7r˜LszTarFile.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) Nryrzrqzmode must be 'r', 'w' or 'x'rzgzip module is not availablerbznot a gzip fileF)ryrzrq) r.ÚgzipZGzipFiler—ÚAttributeErrorrrŸrr˜r†r�)r0r„rhr“Ú compresslevelrŸr¢rºr6r6r7ÚgzopenTs2 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) Nryrzrqzmode must be 'r', 'w' or 'x'rzbz2 module is not available)r¤znot a bzip2 fileF)ryrzrq) r.rŒr—rZBZ2Filer˜rŸÚEOFErrorr†rr�)r0r„rhr“r¤rŸrŒrºr6r6r7Úbz2openvs(  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) Nryrzrqzmode must be 'r', 'w' or 'x'rzlzma module is not available)Úpresetznot an lzma fileF)ryrzrq) r.r r—rZLZMAFiler˜r¡r¦r†rr�)r0r„rhr“r¨rŸr rºr6r6r7Úxzopen“s& zTarFile.xzopenr˜r¥r§r©)rŽr‹rŒr�c Csˆ|jr dSd|_z`|jdkrn|jjttdƒ|jtd7_t|jtƒ\}}|dkrn|jjtt|ƒWd|j s‚|jj ƒXdS)NTrˆrzrqr$r)rˆrzrq) r•rhr“r[r1r¼rÂrYÚ RECORDSIZEr�r†)rƒr`rar6r6r7r†ºs z TarFile.closecCs"|j|ƒ}|dkrtd|ƒ‚|S)Nzfilename %r not found)Ú _getmemberÚKeyError)rƒr„rØr6r6r7Ú getmemberÏs  zTarFile.getmembercCs|jƒ|js|jƒ|jS)N)Ú_checkr“Ú_loadr’)rƒr6r6r7Ú getmembersÚszTarFile.getmemberscCsdd„|jƒDƒS)NcSsg|] }|j‘qSr6)r„)rprØr6r6r7rrèsz$TarFile.getnames..)r°)rƒr6r6r7Ú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¥rérêrØr×r�r�r³rfÚfstatÚfilenoÚst_modeÚS_ISREGÚst_inoÚst_devÚst_nlinkr”r{rÚS_ISDIRr ÚS_ISFIFOr~ÚS_ISLNKrzÚreadlinkÚS_ISCHRr5ÚS_ISBLKr6rhÚ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ür6r6r7Ú gettarinfoês~                 zTarFile.gettarinfoT)r’cCs0|jƒ|dkr|}�x|D�] }|rÒ|jdkr:tdƒnttj|jƒƒtd|jpX|j|jpb|jfƒ|j ƒsz|j ƒr”tdd|j |j fƒntd|j ƒ|jdkr¶tdƒntdtj|jƒdd…ƒt|j|jƒräd nd ƒ|�r"|jƒ�r td |jƒ|jƒ�r"td |jƒtƒqWdS) Nz ??????????z%s/%sz%10sz%d,%dz%10dz????-??-?? ??:??:??z%d-%02d-%02d %02d:%02d:%02dr¯rãr‰z-> zlink to )r®rhrprfrgr+r)r,r*r|r}rýrþr'r(r©Z localtimer„rïrðrærîro)rƒÚverboser’rØr6r6r7rmNs2      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 %rr†)rÐ)r®rcrdreÚ_dbgr„r|r%rŒrÎrír‹ÚaddfilerïÚlistdirÚaddr¹) rƒr„rÌÚ recursiveZexcluderÐrcrØÚfr6r6r7rÔtsB       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®r rrPr4r5r“r[rÂr0r‘rXr'rYr¼r1r’r¸)rƒrØr“rTr_r`rar6r6r7rÒ±s   zTarFile.addfilec Csp|dkr0|j}|dkrtSt|tƒr,tdƒ‚|St|ƒr<|Syt|Stk rjtd|›d�ƒd‚YnXdS)Nz#String names are not supported for z2TarFile.extraction_filter. Use a function such as ztarfile.data_filter directly.zfilter z not foundzUString names are not supported for TarFile.extraction_filter. Use a function such as zrString names are not supported for TarFile.extraction_filter. Use a function such as tarfile.data_filter directly.) Úextraction_filterr÷r)r+Ú TypeErrorÚcallableÚ_NAMED_FILTERSr¬r.)rƒrÐr6r6r7Ú_get_filter_functionÊs zTarFile._get_filter_functionÚ.)Ú numeric_ownerrÐc"Cs®g}|j|ƒ}|dkr|}xT|D]L}|j|||ƒ\}} |dkr@q |jƒrR|j| ƒ|j|||jƒ ||d�q W|jdd„dd��x$|D�]} yæy|| |ƒ}Wn4tk rÔ} z|j| t| ƒƒwŠWYdd} ~ XnX|dkrì|j| dƒwŠt j j ||j ƒ} yt j | ƒ} Wn$tk �r.|j|dƒwŠYnXtj| jƒ�sL|j|dƒwŠ|j|| |d �|j|| ƒ|j|| ƒWqŠtk �r¤} z|j| ƒWYdd} ~ XqŠXqŠWdS) N)Ú set_attrsrÝÚfilter_functioncSs|jS)N)r„)rˆr6r6r7Úÿsz$TarFile.extractall..T)r›Úreversezexcluded by filterZmissingznot a directory)rÝ)rÛÚ_get_extract_tarinforïr¸Ú _extract_oneÚsortÚ_FILTER_ERRORSÚ_log_no_directory_fixupÚreprr|r%r¹r„r³ÚFileNotFoundErrorrfr¾r¹ÚchownÚutimeÚchmodr Ú_handle_nonfatal_error)rƒr%r’rÝrÐZ directoriesrßrórØÚ unfilteredÚexcÚdirpathr³r–r6r6r7Ú extractallÜsP       zTarFile.extractallcCs|jdd|j|fƒdS)Nr$z(tarfile: Not fixing up directory %r (%s))rÑr„)rƒróÚreasonr6r6r7ræ! szTarFile._log_no_directory_fixupr‰c Cs8|j|ƒ}|j|||ƒ\}}|dk r4|j||||ƒdS)N)rÛrârã) rƒrór%rÞrÝrÐrßrØrír6r6r7Úextract% s  zTarFile.extractcCsÒt|tƒr|j|ƒ}n|}d}y|||ƒ}WnZttfk r\}z|j|ƒWYdd}~Xn,tk r†}z|j|ƒWYdd}~XnX|dkr¦|jdd|j ƒdS|j ƒrÊt j |ƒ}t j j||jƒ|_||fS)Nr$ztarfile: Excluded %r)NN)r)r+r­rŸrÛÚ_handle_fatal_errorr rìrÑr„rîr r|r%r¹rær)rƒrórßr%ríÚfilteredr–r6r6r7râ9 s"   zTarFile._get_extract_tarinfocCsŒ|jdƒy&|j|tjj||jƒ||||d�WnVtk r\}z|j|ƒWYdd}~Xn,tk r†}z|j |ƒWYdd}~XnXdS)Nry)rÞrÝrßÚextraction_root) r®Ú_extract_memberr|r%r¹r„rŸrór rì)rƒrØr%rÞrÝrßr–r6r6r7rãW s  zTarFile._extract_onecCs"|jdkr‚n|jdd|ƒdS)Nr#z tarfile: %s)r�rÑ)rƒr–r6r6r7rìk s zTarFile._handle_nonfatal_errorcCsn|jdkr‚n\t|tƒrP|jdkr6|jdd|jƒqj|jdd|j|jfƒn|jddt|ƒj|fƒdS)Nrr#z tarfile: %sztarfile: %s %rztarfile: %s %s)r�r)rŸÚfilenamerÑÚstrerrorrürq)rƒr–r6r6r7rór s   zTarFile._handle_fatal_errorcCs‚|jdƒt|tƒr |j|ƒ}n|}|jƒs6|jtkrB|j||ƒS|jƒsR|j ƒrzt|j t ƒrht dƒ‚q~|j |j|ƒƒSndSdS)Nryz'cannot extract (sym)link as file object)r®r)r+r­rírür\Ú fileobjectrîrðr“r‡r Ú extractfileÚ_find_link_target)rƒrórØr6r6r7rú~ s      zTarFile.extractfile)rßrõcCs\|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||ƒn~|jƒrº|j||ƒnh|jƒsÊ|jƒrØ|j||ƒnJ|jƒsè|j ƒrü|j||||d�n&|jtk�r|j||ƒn |j||ƒ|�rX|j|||ƒ|j ƒ�sX|j||ƒ|j||ƒdS)Nrãr#z%s -> %s)rßrõ)rMr¥r|rér%ròrŠÚmakedirsrîrðrÑr„ræríÚmakefilerïÚmakedirrÚmakefifor|r}ÚmakedevÚmakelink_with_filterrür\Ú makeunknownrérërê)rƒrØÚ targetpathrÞrÝrßrõZ upperdirsr6r6r7rö� s:        zTarFile._extract_memberc Cs@y&|jdkrtj|ƒn tj|dƒWntk r:YnXdS)NiÀ)rhr|ÚmkdirÚFileExistsError)rƒrØrr6r6r7rþÕ s   zTarFile.makedircCs’|j}|j|jƒ|j}t|dƒ�f}|jdk rrx,|jD]"\}}|j|ƒt|||t|ƒq6W|j|jƒ|j ƒnt|||jt|ƒWdQRXdS)Nr‡) r“r¶rÔr‘r‹rÕrXrr'Útruncate)rƒrØrÚsourcer_ÚtargetrÂr'r6r6r7rýã s      zTarFile.makefilecCs"|j||ƒ|jdd|jƒdS)Nr#z9tarfile: Unknown file type %r, extracted as regular file.)rýrÑrü)rƒrØrr6r6r7ró s zTarFile.makeunknowncCs"ttdƒrtj|ƒntdƒ‚dS)NÚmkfifozfifo not supported by system)r�r|r r )rƒrØrr6r6r7rÿû s  zTarFile.makefifocCsnttdƒ sttdƒ r tdƒ‚|j}|dkr2d}|jƒrF|tjO}n |tjO}tj||tj |j |j ƒƒdS)NÚmknodrz'special devices not supported by systemi€) r�r|r rhr}rfÚS_IFBLKÚS_IFCHRr rrýrþ)rƒrØrrhr6r6r7r s  zTarFile.makedevcCs|j||ddƒS)N)r)rƒrØrr6r6r7Úmakelink szTarFile.makelinkc $Cs&d}yT|jƒr6tjj|ƒr$tj|ƒtj|j|ƒdStjj|jƒrVtj |j|ƒdSWnt k rpd}YnXy|j |ƒ}Wn$t k r¤|ržt dƒ‚n‚YnX|dkr´|}nR|dkrÄt dƒ‚y|||ƒ}Wn2tk �r}zt||jƒ|‚WYdd}~XnX|dk �r"|j||||d�dS)NFTz%unable to resolve link inside archivez6makelink_with_filter: if filter_function is not None, z%extraction_root must also not be None)rßrõz[makelink_with_filter: if filter_function is not None, extraction_root must also not be None)rðr|r%ÚlexistsÚunlinkÚsymlinkrærŠrÚlinkÚsymlink_exceptionrûr¬r rårâr„rö) rƒrØrrßrõZkeyerror_to_extracterrorrírôÚcauser6r6r7r sB      zTarFile.makelink_with_filtercCsüttdƒrøtjƒdkrø|j}|j}|sŽytrB|jrBtj|jƒd}Wntk rXYnXyt rv|j rvt j |j ƒd}Wntk rŒYnX|dkršd}|dkr¦d}y4|j ƒrÊttdƒrÊtj |||ƒntj|||ƒWntk rötdƒ‚YnXdS) NÚgeteuidrr$r#Úlchownzcould not change ownerr9r9)r�r|rr*r)rÊr,Zgetgrnamr¬rÈr+ÚgetpwnamrðrrérŸr )rƒrØrrÝÚgÚur6r6r7réJ s0  z TarFile.chownc CsL|jdkrdSttdƒrHytj||jƒWntk rFtdƒ‚YnXdS)Nrëzcould not change mode)rhr�r|rërŸr )rƒrØrr6r6r7rëk s  z TarFile.chmodc CsV|j}|dkrdSttdƒs dSytj|||fƒWntk rPtdƒ‚YnXdS)Nrêz"could not change modification time)r(r�r|rêrŸr )rƒrØrr(r6r6r7rêv 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®r•rÂr“r´r¶rZrrØrUrvrŽrÑr¼rHr+rtrurwr’r¸r“)rƒÚmrØr–r6r6r7r_„ sL        z TarFile.nextc Cs¶|jƒ}d}|dk rHy|j|ƒ}Wntk r:d}YnX|d|…}|rXtjj|ƒ}xLt|ƒD]@}|r||j|jkrbd}qb|r�tjj|jƒ}n|j}||krb|SqbW|r²t|ƒ‚dS)NFT) r°Úindexr.r|r%rñÚreversedrÂr„) rƒr„rØÚ normalizer’ZskippingrróÚ member_namer6r6r7r«º s,    zTarFile._getmembercCs"x|jƒ}|dkrPqWd|_dS)NT)r_r“)rƒrØr6r6r7r¯â s z TarFile._loadcCs:|jrtd|jjƒ‚|dk r6|j|kr6td|jƒ‚dS)Nz %s is closedzbad operation for mode %r)r•rŸrÙrqrh)rƒrhr6r6r7r®ì szTarFile._checkcCs`|jƒr.djtdtjj|jƒ|jfƒƒ}d}n |j}|}|j||dd�}|dkr\t d|ƒ‚|S)NrãT)rØrzlinkname %r not found) rðr¹rÐr|r%ròr„rær«r¬)rƒrØræÚlimitrór6r6r7rûõ s  zTarFile._find_link_targetccsŽ|jr|jEdHdSd}|jdk r:|jƒ}|d7}|VxN|t|jƒkrV|j|}n"|jst|jƒ}|sxd|_dSndS|d7}|VqzFilter for extraction)ÚmetavarÚchoicesr+z-lz--listú zShow listing of a tarfile)r,r+z-ez --extractú+ú zExtract tarfile into target dir)Únargsr,r+z-cz--createúúzCreate tarfile from sourcesz-tz--testzTest if a tarfile is validr#z&--filter is only valid for extraction ry)r z{!r} is a tar archive.z{!r} is not a tar archive. zr:*)rÏ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:rzz{!r} file created.)r.r0)r2r3)ÚargparseÚArgumentParserÚ add_argumentrÚZadd_mutually_exclusive_groupÚ parse_argsrÐròÚexitZtestrrr°rormr!rÏrPrmrr0r|ÚcurdirZ format_helprðZcreateÚpopr%ÚsplitextrÔ)r4r'ÚparserreÚargsr\rŽZtfr9r#Ztar_nameroZextZ compressionsZtar_modeZ tar_filesÚ file_namer6r6r7ÚmainM s’                  r?Ú__main__)r%r&r'r(r)r*r+r,)T)qÚversionÚ __author__Z__date__Z __cvsid__Ú __credits__Úbuiltinsrr‹rmr|rÉrWrfr©rSr ÚrercrÈr—rÊr£ÚNotImplementedErrorrrŸÚ NameErrorÚ__all__r1r¼rªrrrrr3rrJr{rzr5r6r r~ZCONTTYPEr!r rKr-r/rYr rrrr\rxrNrurhr*rFrvr„r Úgetfilesystemencodingr8r=rKrQrUrXrgrpÚ Exceptionrr rrr r rtrurvrHrwrxr‡Úobjectr�rÁÚBufferedReaderrÓÚcompilercrÛrÜrÝrßràrárârårör÷rùrúrÚr rrrr?rqr6r6r6r7Ú s         yh   D}b b