a _æhÀ9ã@s dZddlZddlZddlZddlZddlZddlZejdeddgd¢Z Gdd„de ƒZ dZ d Z d Zd Zd ZGd d„dƒZdd„ZGdd„dƒZejdd„ƒZGdd„dƒZGdd„dƒZGdd„dƒZdd„ZGdd„dƒZGdd „d ƒZGd!d"„d"ƒZd#d$„ZdS)%z‰Macintosh binhex compression/decompression. easy interface: binhex(inputfilename, outputfilename) hexbin(inputfilename, outputfilename) éNzthe binhex module is deprecatedé)Ú stacklevel)ÚbinhexÚhexbinÚErrorc@s eZdZdS)rN)Ú__name__Ú __module__Ú __qualname__©r r ú'/opt/imh-python/lib/python3.9/binhex.pyr%sréi€é@óc@seZdZdd„ZdS)ÚFInfocCsd|_d|_d|_dS)Nz????r)ÚTypeÚCreatorÚFlags©Úselfr r r Ú__init__6szFInfo.__init__N)rrr rr r r r r5srcCsˆtƒ}t |d¡<}| d¡}d|vr,d|_| dd¡| ¡}Wdƒn1sT0Ytj  |¡\}}|  ddd¡}|||dfS) NÚrbirZTEXTrú:ú-r ) rÚioÚopenÚreadrÚseekÚtellÚosÚpathÚsplitÚreplace)ÚnameÚfinfoÚfpÚdataZdsizeÚdirÚfiler r r Ú getfileinfo;s  &r(c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚopenrsrccGsdS©Nr ©rÚargsr r r rIszopenrsrc.__init__cGsdS©Nór r+r r r rLsz openrsrc.readcGsdSr*r r+r r r ÚwriteOszopenrsrc.writecCsdSr*r rr r r ÚcloseRszopenrsrc.closeN)rrr rrr/r0r r r r r)Hsr)ccs@t ¡$t ddt¡dVWdƒn1s20YdS)NÚignoreÚ)ÚwarningsÚcatch_warningsÚfilterwarningsÚDeprecationWarningr r r r Ú_ignore_deprecation_warningXs r7c@s0eZdZdZdd„Zdd„Zdd„Zdd „Zd S) Ú_Hqxcoderenginez(Write data to the coder in 3-byte chunkscCs ||_d|_d|_td|_dS)Nr.r )Úofpr%ÚhqxdataÚLINELENÚlinelen©rr9r r r rbsz_Hqxcoderengine.__init__cCsŽ|j||_t|jƒ}|dd}|jd|…}|j|d…|_|sHdStƒ"|jt |¡|_Wdƒn1sv0Y| d¡dS)Nér)r%Úlenr7r:ÚbinasciiÚb2a_hqxÚ_flush)rr%ZdatalenZtodor r r r/hs   0z_Hqxcoderengine.writecCsrd}|t|jƒ|jkrH||j}|j |j||…d¡t|_|}q|j|d…|_|rn|j |jd¡dS)Nró s: )r?r:r<r9r/r;)rÚforceÚfirstZlastr r r rBts z_Hqxcoderengine._flushcCs\|jr@tƒ$|jt |j¡|_Wdƒn1s60Y| d¡|j ¡|`dS)Nr )r%r7r:r@rArBr9r0rr r r r0s 2  z_Hqxcoderengine.closeN)rrr Ú__doc__rr/rBr0r r r r r8_s   r8c@s(eZdZdZdd„Zdd„Zdd„ZdS) Ú_Rlecoderenginez4Write data to the RLE-coder in suitably large chunkscCs||_d|_dSr-)r9r%r=r r r rŠsz_Rlecoderengine.__init__cCsf|j||_t|jƒtkrdStƒt |j¡}Wdƒn1sF0Y|j |¡d|_dSr-)r%r?ÚREASONABLY_LARGEr7r@Ú rlecode_hqxr9r/)rr%Úrledatar r r r/Žs * z_Rlecoderengine.writecCsV|jrDtƒt |j¡}Wdƒn1s.0Y|j |¡|j ¡|`dSr*)r%r7r@rIr9r/r0)rrJr r r r0—s *  z_Rlecoderengine.closeN)rrr rFrr/r0r r r r rG‡s rGc@sLeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS)ÚBinHexc Cs |\}}}}d}t|tƒr.|}t |d¡}d}zR| d¡t|ƒ} t| ƒ|_d|_|dur`t ƒ}||_ ||_ |  ||¡t |_Wn|r”| ¡‚Yn0dS)NFÚwbTs0(This file must be converted with BinHex 4.0) :r)Ú isinstanceÚstrrrr/r8rGr9ÚcrcrÚdlenÚrlenÚ _writeinfoÚ _DID_HEADERÚstater0) rZname_finfo_dlen_rlenr9r"r#rPrQZclose_on_errorZofnameZhqxerr r r r s*       zBinHex.__init__c Cs´t|ƒ}|dkrtdƒ‚t|gƒ| d¡d}|j|j}}t|tƒrR| d¡}t|tƒrf| d¡}||}t  d|j ¡}t  d|j |j ¡} |||| } |  | ¡| ¡dS)Né?zFilename too longzlatin-1óú>hz>ii)r?rÚbytesÚencoderrrMrNÚstructÚpackrrPrQÚ_writeÚ _writecrc) rr"r#ÚnlÚdÚtpZcrZd2Zd3Zd4Úinfor r r rR·s     zBinHex._writeinfocCs t ||j¡|_|j |¡dSr*)r@Úcrc_hqxrOr9r/©rr%r r r r\Êsz BinHex._writecCs4|jdkrd}nd}|j t ||j¡¡d|_dS)NrrWz>H)rOr9r/rZr[)rÚfmtr r r r]Îs  zBinHex._writecrccCs0|jtkrtdƒ‚|jt|ƒ|_| |¡dS)NzWriting data at the wrong time)rTrSrrPr?r\rcr r r r/Øs z BinHex.writecCs,|jdkrtd|jfƒ‚| ¡t|_dS)NrzIncorrect data size, diff=%r)rPrrQr]Ú _DID_DATArTrr r r Ú close_dataÞs zBinHex.close_datacCsB|jtkr| ¡|jtkr$tdƒ‚|jt|ƒ|_| |¡dS)Nz'Writing resource data at the wrong time)rTrerfrrQr?r\rcr r r Ú write_rsrcäs   zBinHex.write_rsrccCs|jdurdSzb|jtkr"| ¡|jtkr4tdƒ‚|jdkrNtd|jfƒ‚| ¡Wd|_|j}|`| ¡nd|_|j}|`| ¡0dS)NzClose at the wrong timerz$Incorrect resource-datasize, diff=%r)rTrerfrrQr]r9r0r=r r r r0ìs$      ýz BinHex.closeN) rrr rrRr\r]r/rfrgr0r r r r rKŸs rKcCsœt|ƒ}t||ƒ}t |d¡4}| d¡}|s0q<| |¡q | ¡Wdƒn1sX0Yt|dƒ}| d¡}|s|qˆ| |¡ql|  ¡|  ¡dS)zEbinhex(infilename, outfilename): create binhex-encoded copy of a fileréôN) r(rKrrrr/rfr)rgr0)ÚinpÚoutr#r9Úifpr_r r r rýs   &   rc@s(eZdZdZdd„Zdd„Zdd„ZdS) Ú_Hqxdecoderenginez*Read data via the decoder in 4-byte chunkscCs||_d|_dS)Nr)rkÚeof©rrkr r r rsz_Hqxdecoderengine.__init__cCsØd}|}|dkrÔ|jr|S|ddd}|j |¡}z>tƒ t |¡\}|_Wdƒn1sd0YWq¬WntjyˆYn0|j d¡}|s¢tdƒ‚||}q6||}|t|ƒ}|s|jstdƒ‚q|S) z&Read at least wtd bytes (or until EOF)r.rrr>éNr zPremature EOF on binhex file) rmrkrr7r@Za2b_hqxZ Incompleterr?)rZtotalwtdZdecdataÚwtdr%Z decdatacurÚnewdatar r r rs*  .     z_Hqxdecoderengine.readcCs|j ¡dSr*©rkr0rr r r r0:sz_Hqxdecoderengine.closeN)rrr rFrrr0r r r r rls!rlc@s0eZdZdZdd„Zdd„Zdd„Zdd „Zd S) Ú_RledecoderenginezRead data via the RLE-codercCs||_d|_d|_d|_dS)Nr.r)rkÚ pre_bufferÚ post_bufferrmrnr r r r@sz_Rledecoderengine.__init__cCsD|t|jƒkr"| |t|jƒ¡|jd|…}|j|d…|_|Sr*)r?ruÚ_fill)rrpÚrvr r r rFs z_Rledecoderengine.readcCsB|j|j |d¡|_|jjrdtƒ$|jt |j¡|_Wdƒn1sP0Yd|_dSt|jƒ}|jdd…t dt kr’|d}nX|jdd…t kr®|d}n<|jdd…t dkrÎ|d}n|jdd…t krân|d }tƒ,|jt |jd|…¡|_Wdƒn1s$0Y|j|d…|_dS) Nror.éýÿÿÿrVr>éÿÿÿÿréþÿÿÿr ) rtrkrrmr7rur@Z rledecode_hqxr?ÚRUNCHAR)rrpZmarkr r r rvMs. ÿ$    ÿ&z_Rledecoderengine._fillcCs|j ¡dSr*rrrr r r r0rsz_Rledecoderengine.closeN)rrr rFrrrvr0r r r r rs=s %rsc@sLeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS)ÚHexBincCsft|tƒrt |d¡}| d¡}|s,tdƒ‚|dkr6q|dkrqBqt|ƒ}t|ƒ|_d|_ |  ¡dS)Nrr zNo binhex data foundrCó:r) rMrNrrrrrlrsrkrOÚ _readheader)rrkZchZhqxifpr r r rvs    zHexBin.__init__cCs |j |¡}t ||j¡|_|Sr*)rkrr@rbrO)rr?r%r r r Ú_readŒs z HexBin._readcCsNt d|j d¡¡dd@}|jd@|_||jkrDtd|j|fƒ‚d|_dS)NrWrriÿÿzCRC error, computed %x, read %x)rZÚunpackrkrrOr)rZfilecrcr r r Ú _checkcrc‘s  ÿzHexBin._checkcrccCs¾| d¡}| t|ƒ¡}| d¡}| ¡|dd…}|dd…}t d|dd…¡d}t d|dd …¡d|_t d|d d…¡d|_||_tƒ|_||j_ ||j_ ||j_ t |_ dS) Nr ééé rWé rz>lé)rÚordrrZr€rPrQÚFNamerrrrrSrT)rr?ZfnameÚrestÚtypeZcreatorÚflagsr r r r~›s    zHexBin._readheadercGsj|jtkrtdƒ‚|r,|d}t||jƒ}n|j}d}t|ƒ|krZ|| |t|ƒ¡}q6|j||_|S)NzRead data at wrong timerr.)rTrSrÚminrPr?r)rÚnrwr r r r¯s   z HexBin.readcCs6|jtkrtdƒ‚|jr$| |j¡}| ¡t|_dS)Nzclose_data at wrong time)rTrSrrPrrre©rÚdummyr r r rf½s   zHexBin.close_datacGsZ|jtkr| ¡|jtkr$tdƒ‚|r>|d}t||jƒ}n|j}|j||_| |¡S)Nz Read resource data at wrong timer)rTrSrfrerrŒrQr)rrr r r Ú read_rsrcÅs   zHexBin.read_rsrccCsT|jdurdSz.|jr"| |j¡}| ¡Wd|_|j ¡nd|_|j ¡0dSr*)rTrQrrrkr0rŽr r r r0Òs    ÿz HexBin.closeN) rrr rrrr~rrfrr0r r r r r|us  r|cCsºt|ƒ}|j}|s|j}t |d¡,}| d¡}|s6qB| |¡q&Wdƒn1sV0Y| ¡| d¡}|r®t |dƒ}| |¡| d¡}|sšq¦| |¡qŠ|  ¡|  ¡dS)z6hexbin(infilename, outfilename) - Decode binhexed filerLrhN) r|rrˆrrrr/rfrr)r0)rirjrkr#r9r_r r r rÝs$ *     r)rFr@Ú contextlibrrrZr3Úwarnr6Ú__all__Ú ExceptionrrSrerHr;r{rr(r)Úcontextmanagerr7r8rGrKrrlrsr|rr r r r Ús:ÿ  (^+8h