Ñò §ÚêLc @s²dZddkZddkZddkZddkZdddgZdefd„ƒYZedƒ\Z Z Z dZ d Z ed ƒZy<dd klZlZdd klZd „Zd„ZWnBej o6dd$d„ƒYZd„Zdd%d„ƒYZnXdd&d„ƒYZdd'd„ƒYZdd(d„ƒYZd„Zdd)d„ƒYZdd*d„ƒYZdd+d „ƒYZd!„Zd"„Z e!d#jo e ƒndS(,s‰Macintosh binhex compression/decompression. easy interface: binhex(inputfilename, outputfilename) hexbin(inputfilename, outputfilename) iÿÿÿÿNtbinhexthexbintErrorcBseZRS((t__name__t __module__(((s/usr/lib64/python2.6/binhex.pyRsii€i@i(tFSSpectFInfo(topenrfcCst|ƒiƒ}tii|ƒ\}}t|dƒ}|iddƒ|iƒ}t|dƒ}|iddƒ|iƒ}||||fS(Ntrbiis*rb( Rt FSpGetFInfotostpathtsplittopentseekttellR(tnametfinfotdirtfiletfptdlentrlen((s/usr/lib64/python2.6/binhex.pyt getfileinfo3s  cGs,|p d}nd|d}t||ƒS(Ns*rbt*i(R(Rtmode((s/usr/lib64/python2.6/binhex.pytopenrsrc?s RcBseZd„ZRS(cCsd|_d|_d|_dS(Ns????i(tTypetCreatortFlags(tself((s/usr/lib64/python2.6/binhex.pyt__init__Ls  (RRR(((s/usr/lib64/python2.6/binhex.pyRKscCsÚtƒ}t|ƒ}t|ƒidƒ}xJ|D]9}|iƒ o%|djpt|ƒdjoPq1q1Wd|_|iddƒ|iƒ}|iƒt i i |ƒ\}}|i ddd ƒ}|||dfS( Nit itTEXTiit:t-i( RR treadtisspacetordRRRtcloseR R R treplace(RRRtdatatctdsizeRR((s/usr/lib64/python2.6/binhex.pyRQs  .    RcBs,eZd„Zd„Zd„Zd„ZRS(cGsdS(N((Rtargs((s/usr/lib64/python2.6/binhex.pyRcscGsdS(Nt((RR,((s/usr/lib64/python2.6/binhex.pyR$fscGsdS(N((RR,((s/usr/lib64/python2.6/binhex.pytwriteiscCsdS(N((R((s/usr/lib64/python2.6/binhex.pyR'ls(RRRR$R.R'(((s/usr/lib64/python2.6/binhex.pyRbs   t_HqxcoderenginecBs2eZdZd„Zd„Zd„Zd„ZRS(s(Write data to the coder in 3-byte chunkscCs,||_d|_d|_td|_dS(NR-i(tofpR)thqxdatatLINELENtlinelen(RR0((s/usr/lib64/python2.6/binhex.pyRrs   cCs€|i||_t|iƒ}|dd}|i| }|i||_|pdS|iti|ƒ|_|idƒdS(Nii(R)tlenR1tbinasciitb2a_hqxt_flush(RR)tdatalenttodo((s/usr/lib64/python2.6/binhex.pyR.xs cCs›d}x\|t|iƒ|ijo>||i}|ii|i||!dƒt|_|}q W|i||_|o|ii|idƒndS(Nis s: (R4R1R3R0R.R2(Rtforcetfirsttlast((s/usr/lib64/python2.6/binhex.pyR7ƒs   cCsN|io |iti|iƒ|_n|idƒ|iiƒ|`dS(Ni(R)R1R5R6R7R0R'(R((s/usr/lib64/python2.6/binhex.pyR'Žs     (RRt__doc__RR.R7R'(((s/usr/lib64/python2.6/binhex.pyR/os   t_RlecoderenginecBs)eZdZd„Zd„Zd„ZRS(s4Write data to the RLE-coder in suitably large chunkscCs||_d|_dS(NR-(R0R)(RR0((s/usr/lib64/python2.6/binhex.pyR™s cCsZ|i||_t|iƒtjodSti|iƒ}|ii|ƒd|_dS(NR-(R)R4tREASONABLY_LARGER5t rlecode_hqxR0R.(RR)trledata((s/usr/lib64/python2.6/binhex.pyR.s cCsG|io&ti|iƒ}|ii|ƒn|iiƒ|`dS(N(R)R5R@R0R.R'(RRA((s/usr/lib64/python2.6/binhex.pyR'¥s   (RRR=RR.R'(((s/usr/lib64/python2.6/binhex.pyR>–s  tBinHexcBsPeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z RS(c Csî|\}}}}t|ƒtdƒjoI|}t|dƒ}tidjo t|ƒ}|iddƒqtn|idƒt|ƒ} t| ƒ|_ d|_ |djo t ƒ}n||_ ||_|i||ƒt|_dS(NR-twtmactBnHqR!s0(This file must be converted with BinHex 4.0) :i(ttypeR R RRtSetCreatorTypeR.R/R>R0tcrctNoneRRRt _writeinfot _DID_HEADERtstate( Rtname_finfo_dlen_rlenR0RRRRtofnametfssthqxer((s/usr/lib64/python2.6/binhex.pyR­s"        c Cs§t|ƒ}|djo td‚nt|ƒ|d}|i|i}tid|iƒ}tid|i|i ƒ}||||}|i |ƒ|i ƒdS(Ni?sFilename too longts>hs>ii( R4RtchrRRtstructtpackRRRt_writet _writecrc( RRRtnltdtd2td3td4tinfo((s/usr/lib64/python2.6/binhex.pyRJÀs    cCs,ti||iƒ|_|ii|ƒdS(N(R5tcrc_hqxRHR0R.(RR)((s/usr/lib64/python2.6/binhex.pyRUÎscCsL|idjo d}nd}|iiti||iƒƒd|_dS(Nis>hs>H(RHR0R.RSRT(Rtfmt((s/usr/lib64/python2.6/binhex.pyRVÒs  cCsD|itjo td‚n|it|ƒ|_|i|ƒdS(NsWriting data at the wrong time(RLRKRRR4RU(RR)((s/usr/lib64/python2.6/binhex.pyR.Üs cCs>|idjotd|if‚n|iƒt|_dS(NisIncorrect data size, diff=%r(RRRRVt _DID_DATARL(R((s/usr/lib64/python2.6/binhex.pyt close_dataâs cCsb|itjo|iƒn|itjo td‚n|it|ƒ|_|i|ƒdS(Ns'Writing resource data at the wrong time(RLR_R`RRR4RU(RR)((s/usr/lib64/python2.6/binhex.pyt write_rsrcès  cCsŒ|itjo|iƒn|itjo td‚n|idjotd|if‚n|iƒ|iiƒd|_|`dS(NsClose at the wrong timeis$Incorrect resource-datasize, diff=%r( RLR_R`RRRVR0R'RI(R((s/usr/lib64/python2.6/binhex.pyR'ðs    ( RRRRJRURVR.R`RaR'(((s/usr/lib64/python2.6/binhex.pyRB¬s      cCsÁt|ƒ}t||ƒ}t|dƒ}x+|idƒ}|pPn|i|ƒq-|iƒ|iƒt|dƒ}x+|idƒ}|pPn|i|ƒq~|iƒ|iƒdS(s@(infilename, outfilename) - Create binhex-encoded copy of a fileRiôN( RRBR R$R.R`R'RRa(tinptoutRR0tifpRX((s/usr/lib64/python2.6/binhex.pyRýs$    t_HqxdecoderenginecBs)eZdZd„Zd„Zd„ZRS(s*Read data via the decoder in 4-byte chunkscCs||_d|_dS(Ni(Rdteof(RRd((s/usr/lib64/python2.6/binhex.pyRs cCsþd}|}xë|djoÝ|io|S|ddd}|ii|ƒ}xiyti|ƒ\}|_PWntij onX|iidƒ}|p td‚n||}qR||}|t|ƒ}| o|i o td‚qqW|S(s&Read at least wtd bytes (or until EOF)R-iiiiisPremature EOF on binhex file(RfRdR$R5ta2b_hqxt IncompleteRR4(RttotalwtdtdecdatatwtdR)t decdatacurtnewdata((s/usr/lib64/python2.6/binhex.pyR$s0     cCs|iiƒdS(N(RdR'(R((s/usr/lib64/python2.6/binhex.pyR'<s(RRR=RR$R'(((s/usr/lib64/python2.6/binhex.pyRes  "t_RledecoderenginecBs2eZdZd„Zd„Zd„Zd„ZRS(sRead data via the RLE-codercCs(||_d|_d|_d|_dS(NR-i(Rdt pre_buffert post_bufferRf(RRd((s/usr/lib64/python2.6/binhex.pyRBs   cCsU|t|iƒjo|i|t|iƒƒn|i| }|i||_|S(N(R4Rpt_fill(RRktrv((s/usr/lib64/python2.6/binhex.pyR$Hs  cCs.|i|ii|dƒ|_|iio*|iti|iƒ|_d|_dSt|iƒ}|idtdtjo|d}nk|idtjo|d}nI|idtdjo|d}n#|idtjon |d }|iti|i| ƒ|_|i||_dS( NiR-iýÿÿÿRQiiÿÿÿÿiiþÿÿÿi( RoRdR$RfRpR5t rledecode_hqxR4tRUNCHAR(RRktmark((s/usr/lib64/python2.6/binhex.pyRqOs&     cCs|iiƒdS(N(RdR'(R((s/usr/lib64/python2.6/binhex.pyR'rs(RRR=RR$RqR'(((s/usr/lib64/python2.6/binhex.pyRn?s    #tHexBincBsPeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z RS(cCsÇt|ƒtdƒjot|ƒ}nxi|idƒ}|p td‚n|djoq,n|djoPn|djo|iƒ}q,q,t|ƒ}t|ƒ|_d|_|i ƒdS(NR-isNo binhex data founds R"s i( RFR R$RtreadlineReRnRdRHt _readheader(RRdtchtdummythqxifp((s/usr/lib64/python2.6/binhex.pyRvs       cCs.|ii|ƒ}ti||iƒ|_|S(N(RdR$R5R]RH(RR4R)((s/usr/lib64/python2.6/binhex.pyt_readŽscCsmtid|iidƒƒdd@}|id@|_||ijotd|i|f‚nd|_dS(Ns>hiiiÿÿsCRC error, computed %x, read %x(RStunpackRdR$RHR(Rtfilecrc((s/usr/lib64/python2.6/binhex.pyt _checkcrc“s &c Csú|idƒ}|it|ƒƒ}|idƒ}|iƒ|dd!}|dd!}tid|dd!ƒd}tid |dd !ƒd|_tid |d d !ƒd|_||_tƒ|_||i_ ||i_ ||i_ t |_ dS(Niiiii s>hi is>liiii i ii(R|R&RRSR}RRtFNameRRRRRKRL(RR4tfnametrestRFtcreatortflags((s/usr/lib64/python2.6/binhex.pyRxs          cGsŸ|itjo td‚n|o |d}t||iƒ}n |i}d}x5t|ƒ|jo!||i|t|ƒƒ}qVW|i||_|S(NsRead data at wrong timeiR-(RLRKRtminRR4R|(RtnRr((s/usr/lib64/python2.6/binhex.pyR$±s   "cCsT|itjo td‚n|io|i|iƒ}n|iƒt|_dS(Nsclose_data at wrong time(RLRKRRR|RR_(RRz((s/usr/lib64/python2.6/binhex.pyR`¿s    cGsˆ|itjo|iƒn|itjo td‚n|o |d}t||iƒ}n |i}|i||_|i|ƒS(Ns Read resource data at wrong timei(RLRKR`R_RR…RR|(RR†((s/usr/lib64/python2.6/binhex.pyt read_rsrcÇs   cCsD|io|i|iƒ}n|iƒt|_|iiƒdS(N(RR‡Rt _DID_RSRCRLRdR'(RRz((s/usr/lib64/python2.6/binhex.pyR'Ôs    ( RRRR|RRxR$R`R‡R'(((s/usr/lib64/python2.6/binhex.pyRvus      cCsst|ƒ}|i}|p |i}ntidjot|ƒ}|iƒ}nt|dƒ}x+|idƒ}|pPn|i |ƒqg|i ƒ|i ƒ|i dƒ}|oXt |dƒ}|i |ƒx+|i dƒ}|pPn|i |ƒqÛ|i ƒntidjoA|iƒ}|i|_|i|_|i|_|i|ƒn|i ƒdS(s0(infilename, outfilename) - Decode binhexed fileRDtwbiôN(RvRR€R RRt as_pathnameR R$R.R'R`R‡RtGetFInfoRRRtSetFInfo(RbRcRdRtofssR0RXtnfinfo((s/usr/lib64/python2.6/binhex.pyRÛs@           cCsDtid}t||dƒt|d|dƒtidƒdS(Nis.hqxs.viahqx(tsystargvRRtexit(R((s/usr/lib64/python2.6/binhex.pyt_tests t__main__((((((((("R=RR RSR5t__all__t ExceptionRtrangeRKR_RˆR?R2RRRtt Carbon.FileRRtMacOSRRRt ImportErrorR/R>RBRReRnRvRR’R(((s/usr/lib64/python2.6/binhex.pyts<        'Q ,6f &