ž ¦ÿfŒ5c@sBdZddlZddlZddlZddlZdddgZGdd„deƒZedƒ\Z Z Z dZ d Z d ZGd d „d ƒZd d„ZGdd„dƒZGdd„dƒZGdd„dƒZGdd„dƒZdd„ZGdd„dƒZGdd„dƒZGdd„dƒZdd„ZdS(u‰Macintosh binhex compression/decompression. easy interface: binhex(inputfilename, outputfilename) hexbin(inputfilename, outputfilename) iNubinhexuhexbinuErrorcBs|EeZdZdS(uErrorN(u__name__u __module__u __qualname__(u __locals__((u+/opt/alt/python33/lib64/python3.3/binhex.pyuErrorsii€i@scBs |EeZdZdd„ZdS(uFInfocCsd|_d|_d|_dS(Nu????i(uTypeuCreatoruFlags(uself((u+/opt/alt/python33/lib64/python3.3/binhex.pyu__init__/s  uFInfo.__init__N(u__name__u __module__u __qualname__u__init__(u __locals__((u+/opt/alt/python33/lib64/python3.3/binhex.pyuFInfo.suFInfoc Cs¤tƒ}tj|dƒJ}|jdƒ}d|krEd|_n|jddƒ|jƒ}WdQXtjj |ƒ\}}|j dddƒ}|||dfS( NurbiiuTEXTiu:u-i( uFInfouiouopenureaduTypeuseekutelluosupathusplitureplace(unameufinfoufpudataudsizeudirufile((u+/opt/alt/python33/lib64/python3.3/binhex.pyu getfileinfo4s   u getfileinfocBsD|EeZdZdd„Zdd„Zdd„Zdd„Zd S( uopenrsrccGsdS(N((uselfuargs((u+/opt/alt/python33/lib64/python3.3/binhex.pyu__init__Bsuopenrsrc.__init__cGsdS(Ns((uselfuargs((u+/opt/alt/python33/lib64/python3.3/binhex.pyureadEsu openrsrc.readcGsdS(N((uselfuargs((u+/opt/alt/python33/lib64/python3.3/binhex.pyuwriteHsuopenrsrc.writecCsdS(N((uself((u+/opt/alt/python33/lib64/python3.3/binhex.pyucloseKsuopenrsrc.closeN(u__name__u __module__u __qualname__u__init__ureaduwriteuclose(u __locals__((u+/opt/alt/python33/lib64/python3.3/binhex.pyuopenrsrcAs   uopenrsrccBsJ|EeZdZdZdd„Zdd„Zdd„Zdd „Zd S( u_Hqxcoderengineu(Write data to the coder in 3-byte chunkscCs,||_d|_d|_td|_dS(Nsi(uofpudatauhqxdatauLINELENulinelen(uselfuofp((u+/opt/alt/python33/lib64/python3.3/binhex.pyu__init__Qs   u_Hqxcoderengine.__init__cCsŠ|j||_t|jƒ}|dd}|jd|…}|j|d…|_|s`dS|jtj|ƒ|_|jdƒdS(Nii(udataulenuhqxdataubinasciiub2a_hqxu_flush(uselfudataudatalenutodo((u+/opt/alt/python33/lib64/python3.3/binhex.pyuwriteWsu_Hqxcoderengine.writecCs d}x]|t|jƒ|jkre||j}|jj|j||…dƒt|_|}q W|j|d…|_|rœ|jj|jdƒndS(Nis s: (ulenuhqxdataulinelenuofpuwriteuLINELEN(uselfuforceufirstulast((u+/opt/alt/python33/lib64/python3.3/binhex.pyu_flushbs !  u_Hqxcoderengine._flushcCsL|jr(|jtj|jƒ|_n|jdƒ|jjƒ|`dS(Ni(udatauhqxdataubinasciiub2a_hqxu_flushuofpuclose(uself((u+/opt/alt/python33/lib64/python3.3/binhex.pyuclosems    u_Hqxcoderengine.closeN(u__name__u __module__u __qualname__u__doc__u__init__uwriteu_flushuclose(u __locals__((u+/opt/alt/python33/lib64/python3.3/binhex.pyu_HqxcoderengineNs   u_HqxcoderenginecBs>|EeZdZdZdd„Zdd„Zdd„ZdS( u_Rlecoderengineu4Write data to the RLE-coder in suitably large chunkscCs||_d|_dS(Ns(uofpudata(uselfuofp((u+/opt/alt/python33/lib64/python3.3/binhex.pyu__init__ws u_Rlecoderengine.__init__cCsX|j||_t|jƒtkr)dStj|jƒ}|jj|ƒd|_dS(Ns(udataulenuREASONABLY_LARGEubinasciiu rlecode_hqxuofpuwrite(uselfudataurledata((u+/opt/alt/python33/lib64/python3.3/binhex.pyuwrite{s u_Rlecoderengine.writecCsE|jr.tj|jƒ}|jj|ƒn|jjƒ|`dS(N(udataubinasciiu rlecode_hqxuofpuwriteuclose(uselfurledata((u+/opt/alt/python33/lib64/python3.3/binhex.pyucloseƒs   u_Rlecoderengine.closeN(u__name__u __module__u __qualname__u__doc__u__init__uwriteuclose(u __locals__((u+/opt/alt/python33/lib64/python3.3/binhex.pyu_Rlecoderenginets  u_RlecoderenginecBst|EeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS(uBinHexc Cså|\}}}}d}t|tƒrH|}tj|dƒ}d}nyx|jdƒt|ƒ} t| ƒ|_ d|_ |dkr”t ƒ}n||_ ||_|j||ƒt|_Wn|rÙ|jƒn‚YnXdS(Nuwbs0(This file must be converted with BinHex 4.0) :iFT(uFalseu isinstanceustruiouopenuTrueuwriteu_Hqxcoderengineu_RlecoderengineuofpucrcuNoneuFInfoudlenurlenu _writeinfou _DID_HEADERustateuclose( uselfuname_finfo_dlen_rlenuofpunameufinfoudlenurlenuclose_on_erroruofnameuhqxer((u+/opt/alt/python33/lib64/python3.3/binhex.pyu__init__‹s*          uBinHex.__init__c Cst|ƒ}|dkr'tdƒ‚nt|gƒ|jdƒd}|j|j}}t|tƒr{|jdƒ}nt|tƒrœ|jdƒ}n||}tj d|j ƒ}tj d|j |j ƒ} |||| } |j | ƒ|jƒdS(Ni?uFilename too longulatin-1su>hu>ii(ulenuErrorubytesuencodeuTypeuCreatoru isinstanceustrustructupackuFlagsudlenurlenu_writeu _writecrc( uselfunameufinfounludutpucrud2ud3ud4uinfo((u+/opt/alt/python33/lib64/python3.3/binhex.pyu _writeinfo¢s     uBinHex._writeinfocCs,tj||jƒ|_|jj|ƒdS(N(ubinasciiucrc_hqxucrcuofpuwrite(uselfudata((u+/opt/alt/python33/lib64/python3.3/binhex.pyu_writeµsu BinHex._writecCsJ|jdkrd}nd}|jjtj||jƒƒd|_dS(Niu>hu>H(ucrcuofpuwriteustructupack(uselfufmt((u+/opt/alt/python33/lib64/python3.3/binhex.pyu _writecrc¹s  uBinHex._writecrccCsE|jtkrtdƒ‚n|jt|ƒ|_|j|ƒdS(NuWriting data at the wrong time(ustateu _DID_HEADERuErrorudlenulenu_write(uselfudata((u+/opt/alt/python33/lib64/python3.3/binhex.pyuwriteÃsu BinHex.writecCs?|jdkr(td|jfƒ‚n|jƒt|_dS(NiuIncorrect data size, diff=%r(udlenuErrorurlenu _writecrcu _DID_DATAustate(uself((u+/opt/alt/python33/lib64/python3.3/binhex.pyu close_dataÉs uBinHex.close_datacCsa|jtkr|jƒn|jtkr:tdƒ‚n|jt|ƒ|_|j|ƒdS(Nu'Writing resource data at the wrong time(ustateu _DID_DATAu close_datauErrorurlenulenu_write(uselfudata((u+/opt/alt/python33/lib64/python3.3/binhex.pyu write_rsrcÏs  uBinHex.write_rsrccCsŒ|jtkr|jƒn|jtkr:tdƒ‚n|jdkrbtd|jfƒ‚n|jƒ|jjƒd|_|`dS(NuClose at the wrong timeiu$Incorrect resource-datasize, diff=%r( ustateu _DID_DATAu close_datauErrorurlenu _writecrcuofpucloseuNone(uself((u+/opt/alt/python33/lib64/python3.3/binhex.pyuclose×s    u BinHex.closeN( u__name__u __module__u __qualname__u__init__u _writeinfou_writeu _writecrcuwriteu close_datau write_rsrcuclose(u __locals__((u+/opt/alt/python33/lib64/python3.3/binhex.pyuBinHexŠs      uBinHexcCsÀt|ƒ}t||ƒ}tj|dƒ}x)|jdƒ}|sIPn|j|ƒq0|jƒ|jƒt|dƒ}x)|jdƒ}|s˜Pn|j |ƒq|jƒ|jƒdS(uEbinhex(infilename, outfilename): create binhex-encoded copy of a fileurbiôN( u getfileinfouBinHexuiouopenureaduwriteu close_dataucloseuopenrsrcu write_rsrc(uinpuoutufinfouofpuifpud((u+/opt/alt/python33/lib64/python3.3/binhex.pyubinhexãs$    cBs>|EeZdZdZdd„Zdd„Zdd„ZdS( u_Hqxdecoderengineu*Read data via the decoder in 4-byte chunkscCs||_d|_dS(Ni(uifpueof(uselfuifp((u+/opt/alt/python33/lib64/python3.3/binhex.pyu__init__üs u_Hqxdecoderengine.__init__c Csúd}|}xç|dkrõ|jr(|S|ddd}|jj|ƒ}xiytj|ƒ\}|_PWntjk rƒYnX|jjdƒ}|s«tdƒ‚n||}qO||}|t|ƒ}| r|j rtdƒ‚qqW|S(u&Read at least wtd bytes (or until EOF)siiiiiuPremature EOF on binhex file(ueofuifpureadubinasciiua2b_hqxu IncompleteuErrorulen(uselfutotalwtdudecdatauwtdudatau decdatacurunewdata((u+/opt/alt/python33/lib64/python3.3/binhex.pyureads,   u_Hqxdecoderengine.readcCs|jjƒdS(N(uifpuclose(uself((u+/opt/alt/python33/lib64/python3.3/binhex.pyuclose su_Hqxdecoderengine.closeN(u__name__u __module__u __qualname__u__doc__u__init__ureaduclose(u __locals__((u+/opt/alt/python33/lib64/python3.3/binhex.pyu_Hqxdecoderengineùs  u_HqxdecoderenginecBsJ|EeZdZdZdd„Zdd„Zdd„Zdd „Zd S( u_RledecoderengineuRead data via the RLE-codercCs(||_d|_d|_d|_dS(Nsi(uifpu pre_bufferu post_bufferueof(uselfuifp((u+/opt/alt/python33/lib64/python3.3/binhex.pyu__init__&s   u_Rledecoderengine.__init__cCs_|t|jƒkr2|j|t|jƒƒn|jd|…}|j|d…|_|S(N(ulenu post_bufferu_fill(uselfuwtdurv((u+/opt/alt/python33/lib64/python3.3/binhex.pyuread,s u_Rledecoderengine.readcCsH|j|jj|dƒ|_|jjrU|jtj|jƒ|_d|_dSt|jƒ}|jdd…tdtkr’|d}nv|jdd…tkr¸|d}nP|jd d…tdkrâ|d}n&|jd d …tkrþn |d}|jtj|jd|…ƒ|_|j|d…|_dS( Nisisiiiýÿÿÿiÿÿÿÿiþÿÿÿiþÿÿÿiÿÿÿÿ( u pre_bufferuifpureadueofu post_bufferubinasciiu rledecode_hqxulenuRUNCHAR(uselfuwtdumark((u+/opt/alt/python33/lib64/python3.3/binhex.pyu_fill3s&    !     u_Rledecoderengine._fillcCs|jjƒdS(N(uifpuclose(uself((u+/opt/alt/python33/lib64/python3.3/binhex.pyucloseVsu_Rledecoderengine.closeN(u__name__u __module__u __qualname__u__doc__u__init__ureadu_filluclose(u __locals__((u+/opt/alt/python33/lib64/python3.3/binhex.pyu_Rledecoderengine#s    #u_RledecoderenginecBst|EeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS(uHexBincCs¢t|tƒr$tj|dƒ}nxI|jdƒ}|sKtdƒ‚n|dkr]q'n|dkr'Pq'q't|ƒ}t|ƒ|_d|_ |j ƒdS(NurbiuNo binhex data founds s:i( u isinstanceustruiouopenureaduErroru_Hqxdecoderengineu_Rledecoderengineuifpucrcu _readheader(uselfuifpuchuhqxifp((u+/opt/alt/python33/lib64/python3.3/binhex.pyu__init__Zs    uHexBin.__init__cCs.|jj|ƒ}tj||jƒ|_|S(N(uifpureadubinasciiucrc_hqxucrc(uselfulenudata((u+/opt/alt/python33/lib64/python3.3/binhex.pyu_readpsu HexBin._readcCsntjd|jjdƒƒdd@}|jd@|_||jkratd|j|fƒ‚nd|_dS(Nu>hiiiÿÿuCRC error, computed %x, read %x(ustructuunpackuifpureaducrcuError(uselfufilecrc((u+/opt/alt/python33/lib64/python3.3/binhex.pyu _checkcrcus &uHexBin._checkcrccCs |jdƒ}|jt|ƒƒ}|jdƒ}|jƒ|dd…}|dd…}tjd|dd…ƒd}tjd |dd …ƒd|_tjd |d d …ƒd|_||_tƒ|_||j_ ||j_ ||j_ t |_ dS(Niiiii u>hi iu>liiii i ii(u_readuordu _checkcrcustructuunpackudlenurlenuFNameuFInfouCreatoruTypeuFlagsu _DID_HEADERustate(uselfulenufnameurestutypeucreatoruflags((u+/opt/alt/python33/lib64/python3.3/binhex.pyu _readheaders  ##     uHexBin._readheadercGsœ|jtkrtdƒ‚n|rC|d}t||jƒ}n |j}d}x3t|ƒ|kr‡||j|t|ƒƒ}qUW|j||_|S(NuRead data at wrong timeis(ustateu _DID_HEADERuErroruminudlenulenu_read(uselfunurv((u+/opt/alt/python33/lib64/python3.3/binhex.pyuread“s  !u HexBin.readcCsS|jtkrtdƒ‚n|jr<|j|jƒ}n|jƒt|_dS(Nuclose_data at wrong time(ustateu _DID_HEADERuErrorudlenu_readu _checkcrcu _DID_DATA(uselfudummy((u+/opt/alt/python33/lib64/python3.3/binhex.pyu close_data¡s   uHexBin.close_datacGs…|jtkr|jƒn|jtkr:tdƒ‚n|r_|d}t||jƒ}n |j}|j||_|j|ƒS(Nu Read resource data at wrong timei(ustateu _DID_HEADERu close_datau _DID_DATAuErroruminurlenu_read(uselfun((u+/opt/alt/python33/lib64/python3.3/binhex.pyu read_rsrc©s   uHexBin.read_rsrccCsB|jr|j|jƒ}n|jƒt|_|jjƒdS(N(urlenu read_rsrcu _checkcrcu _DID_RSRCustateuifpuclose(uselfudummy((u+/opt/alt/python33/lib64/python3.3/binhex.pyuclose¶s    u HexBin.closeN( u__name__u __module__u __qualname__u__init__u_readu _checkcrcu _readheaderureadu close_datau read_rsrcuclose(u __locals__((u+/opt/alt/python33/lib64/python3.3/binhex.pyuHexBinYs      uHexBincCsñt|ƒ}|j}|s'|j}ntj|dƒ}x)|jdƒ}|sUPn|j|ƒq<|jƒ|jƒ|j dƒ}|rãt |dƒ}|j|ƒx)|j dƒ}|sÆPn|j|ƒq­|jƒn|jƒdS(u6hexbin(infilename, outfilename) - Decode binhexed fileuwbiôN( uHexBinuFInfouFNameuiouopenureaduwriteucloseu close_datau read_rsrcuopenrsrc(uinpuoutuifpufinfouofpud((u+/opt/alt/python33/lib64/python3.3/binhex.pyuhexbin½s.       (u__doc__uiouosustructubinasciiu__all__u ExceptionuErrorurangeu _DID_HEADERu _DID_DATAu _DID_RSRCuREASONABLY_LARGEuLINELENuRUNCHARuFInfou getfileinfouopenrsrcu_Hqxcoderengineu_RlecoderengineuBinHexubinhexu_Hqxdecoderengineu_RledecoderengineuHexBinuhexbin(((u+/opt/alt/python33/lib64/python3.3/binhex.pyus*      &Y *6d