mò ,á¸Ec@sÀdZddd!ZdkZdkZdkZydklZWndklZnXd„Zd„Z d„Z d fd „ƒYZ d „Z d „Z d fd„ƒYZdfd„ƒYZdS(sYSimple module for writing tar files $Id: tar.py 40218 2005-11-18 14:39:19Z andreasjung $s$Revision: 1.8 $i iþÿÿÿN(spackcCs&t|ƒ}ddt|ƒ|dS(Nt0is (tocttitlen(R((t&/data/zmath/zope/lib/python/App/tar.pytoct8s cCs€t|ƒ}ddt|ƒ|d}t|ƒdjoA|d }x(|D] }|djo td‚qLqLW|dSn|S(NRi t i iôÿÿÿsvalue too large for oct12(RRRtvtlefttct ValueError(RR RR((Rtoct12s    cCs@t|ƒ}||jotd||f‚n|d||S(Ns"value, %s, too wide for field (%d)t(RtstlstlR (R RR((Rtpad(s  tTarEntryc Bs5tZdddddddddd„ Zd„ZRS( Ni¤iRttjimtsystemc Cs/||_|djottiƒƒ}ndit|dƒt |ƒt |ƒt |ƒt t|ƒƒt |ƒdd|t|dƒddt| dƒt| dƒddt| d ƒd d gƒ} t| ƒd jotd t| ƒ‚n| d t td„tt| ƒƒƒ| d} | |_dS(sInitialize a Tar archive entryRidRitustart00i s000000 i›R i isBad Header Length: %di”cCs||S(N(tatb(RR((RtKsiœN(tdatatselftmtimetNonetintttimetjoinRtpathRtmodetuidtgidR RttypeflagtlinknametunametgnametprefixtheaderR treducetmaptord( RR!RR"R#R$RR%R&R'R(R)R*((Rt__init__/s  ›1cCsE|i}t|ƒ}|do|dd|d}n|i|S(NiR (RRRRR*(RRR((Rt__str__Os    (t__name__t __module__RR.R/(((RR-s$ cCsZg}|i}x-|D]%\}}|tt||ƒƒƒqW|ddƒdi|ƒS(NR iR( trtappendtratentriestnameRtstrRR (R5R6R2R4R((RttarUs  cCs‹tiƒ}|i}g}|i}x3|D]+\}}||t t ||ƒƒƒƒq+W||ddƒƒ||i ƒƒdi |ƒS(NR iR(tzlibt compressobjR tcompressR2R3R4R5R6RR7RtflushR (R5R R6R;R2R4R((Rttgz]s    #t tgzarchivecBs/tZdd„Zd„Zd„Zd„ZRS(NcCstd||ƒ|_dS(Ns%s.tar(tgzFileR6RRt_f(RR6R((RR.jscCs#|iitt||ƒƒƒdS(N(RR@twriteR7RR6R(RR6R((RtaddmscCs|iiddƒdS(NR i(RR@RA(R((RtfinishpscCs |iiƒS(N(RR@tgetdata(R((RR/ss(R0R1RR.RBRCR/(((RR>hs   R?cBs;tZdZeidƒZdd„Zd„Zd„Z RS(NiRcCsptidtiti tidƒ|_|djot i ƒ}ndt dt |ƒƒd|dg|_ dS(Ni is‹sR?(RR8RR=R9R?RQRR RR>RPRORJ((Rt? s   (