o ?Og9@s dZddlZddlZddlZddlZddlZddlZejdeddgdZ Gddde Z dZ d Z d Zd Zd ZGd ddZddZGdddZejddZGdddZGdddZGdddZddZGdddZGdd d ZGd!d"d"Zd#d$ZdS)%zMacintosh binhex compression/decompression. easy interface: binhex(inputfilename, outputfilename) hexbin(inputfilename, outputfilename) Nzthe binhex module is deprecated) stacklevel)binhexhexbinErrorc@s eZdZdS)rN)__name__ __module__ __qualname__r r -/opt/alt/python310/lib64/python3.10/binhex.pyr%sri@c@seZdZddZdS)FInfocCsd|_d|_d|_dS)Nz????r)TypeCreatorFlagsselfr r r __init__6s zFInfo.__init__N)rrr rr r r r r5s rcCst}t|d}|d}d|vrd|_|dd|}Wdn1s*wYtj |\}}| ddd}|||dfS) NrbirZTEXTr:-r ) rioopenreadrseektellospathsplitreplace)namefinfofpdataZdsizedirfiler r r getfileinfo;s    r(c@s,eZdZddZddZddZddZd S) openrsrccGdSNr rargsr r r rIzopenrsrc.__init__cGsdSNr r,r r r rLr.z openrsrc.readcGr*r+r r,r r r writeOr.zopenrsrc.writecCr*r+r rr r r closeRr.zopenrsrc.closeN)rrr rrr1r2r r r r r)Hs  r)ccsDttddtdVWddS1swYdS)Nignore)warningscatch_warningsfilterwarningsDeprecationWarningr r r r _ignore_deprecation_warningXs  "r9c@0eZdZdZddZddZddZdd Zd S) _Hqxcoderenginez(Write data to the coder in 3-byte chunkscCs ||_d|_d|_td|_dS)Nr0r )ofpr%hqxdataLINELENlinelenrr<r r r rbsz_Hqxcoderengine.__init__cCs|j||_t|j}|dd}|jd|}|j|d|_|s$dSt|jt||_Wdn1s;wY|ddS)Nr)r%lenr9r=binasciib2a_hqx_flush)rr%ZdatalenZtodor r r r1hs   z_Hqxcoderengine.writecCsd}|t|j|jkr-||j}|j|j||dt|_|}|t|j|jks |j|d|_|rB|j|jddSdS)Nr s: )rBr=r?r<r1r>)rZforcefirstZlastr r r rEts z_Hqxcoderengine._flushcCs\|jr t|jt|j|_Wdn1swY|d|j|`dS)Nr )r%r9r=rCrDrEr<r2rr r r r2s  z_Hqxcoderengine.closeN)rrr __doc__rr1rEr2r r r r r;_s  r;c@(eZdZdZddZddZddZdS) _Rlecoderenginez4Write data to the RLE-coder in suitably large chunkscC||_d|_dSr/)r<r%r@r r r r z_Rlecoderengine.__init__cCsf|j||_t|jtkrdStt|j}Wdn1s#wY|j|d|_dSr/)r%rBREASONABLY_LARGEr9rC rlecode_hqxr<r1)rr%rledatar r r r1s   z_Rlecoderengine.writecCsV|jr"tt|j}Wdn1swY|j||j|`dSr+)r%r9rCrNr<r1r2)rrOr r r r2s  z_Rlecoderengine.closeN)rrr rHrr1r2r r r r rJs  rJc@LeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS)BinHexc Cs|\}}}}d}t|tr|}t|d}d}z*|dt|} t| |_d|_|dur0t }||_ ||_ | ||t |_WdS|rK|)NFwbTs0(This file must be converted with BinHex 4.0) :r) isinstancestrrrr1r;rJr<crcrdlenrlen _writeinfo _DID_HEADERstater2) rZname_finfo_dlen_rlenr<r"r#rVrWZclose_on_errorZofnameZhqxerr r r rs*       zBinHex.__init__c Cst|}|dkr tdt|g|dd}|j|j}}t|tr)|d}t|tr3|d}||}t d|j }t d|j |j } |||| } | | |dS)N?zFilename too longzlatin-1>hz>ii)rBrbytesencoderrrSrTstructpackrrVrW_write _writecrc) rr"r#nldtpZcrZd2Zd3Zd4infor r r rXs      zBinHex._writeinfocCs t||j|_|j|dSr+)rCcrc_hqxrUr<r1rr%r r r rbsz BinHex._writecCs4|jdkrd}nd}|jt||jd|_dS)Nrr]z>H)rUr<r1r`ra)rZfmtr r r rcs  zBinHex._writecrccCs0|jtkr td|jt||_||dS)NzWriting data at the wrong time)rZrYrrVrBrbrir r r r1s z BinHex.writecCs,|jdkr td|jf|t|_dS)NrzIncorrect data size, diff=%r)rVrrWrc _DID_DATArZrr r r close_datas  zBinHex.close_datacCsB|jtkr ||jtkrtd|jt||_||dS)Nz'Writing resource data at the wrong time)rZrjrkrrWrBrbrir r r write_rsrcs  zBinHex.write_rsrccCs|jdurdSz2|jtkr||jtkrtd|jdkr'td|jf|Wd|_|j}|`|dSd|_|j}|`|w)NzClose at the wrong timerz$Incorrect resource-datasize, diff=%r)rZrjrkrrWrcr<r2r@r r r r2s$       z BinHex.closeN) rrr rrXrbrcr1rkrlr2r r r r rQs  rQcCst|}t||}t|d} |d}|sn||q|Wdn1s-wYt|d} |d}|s@n||q8| | dS)zEbinhex(infilename, outfilename): create binhex-encoded copy of a filerTN) r(rQrrrr1rkr)rlr2)inpoutr#r<ifprer r r rs$        rc@rI) _Hqxdecoderenginez*Read data via the decoder in 4-byte chunkscCrK)Nr)rpeofrrpr r r rrLz_Hqxdecoderengine.__init__cCsd}|}|dkrl|jr |S|ddd}|j|} ztt|\}|_Wdn1s3wYWntjyCYnw|jd}|sPtd ||}q||}|t|}|sh|jshtd |dks|S) z&Read at least wtd bytes (or until EOF)r0rrrATNr zPremature EOF on binhex file) rrrprr9rCZa2b_hqxZ IncompleterrB)rZtotalwtdZdecdatawtdr%Z decdatacurnewdatar r r rs4     z_Hqxdecoderengine.readcC|jdSr+rpr2rr r r r2:z_Hqxdecoderengine.closeN)rrr rHrrr2r r r r rqs  !rqc@r:) _RledecoderenginezRead data via the RLE-codercCs||_d|_d|_d|_dS)Nr0r)rp pre_buffer post_bufferrrrsr r r r@s z_Rledecoderengine.__init__cCsD|t|jkr||t|j|jd|}|j|d|_|Sr+)rBr|_fill)rrurvr r r rFs z_Rledecoderengine.readcCs@|j|j|d|_|jjr2t|jt|j|_Wdn1s(wYd|_dSt|j}|jddt dt krI|d}n,|jddt krW|d}n|jddt dkrg|d}n|jddt krqn|d }t|jt|jd||_Wdn1swY|j|d|_dS) Nrtr0r\rArr ) r{rprrrr9r|rCZ rledecode_hqxrBRUNCHAR)rruZmarkr r r r}Ms2     z_Rledecoderengine._fillcCrwr+rxrr r r r2rryz_Rledecoderengine.closeN)rrr rHrrr}r2r r r r rz=s  %rzc@rP)HexBincCsht|tr t|d} |d}|std|dkrq |dkr!nq t|}t||_d|_ | dS)NrTr zNo binhex data foundrF:r) rSrTrrrrrqrzrprU _readheader)rrpZchZhqxifpr r r rvs     zHexBin.__init__cCs |j|}t||j|_|Sr+)rprrCrhrU)rrBr%r r r _reads z HexBin._readcCsNtd|jddd@}|jd@|_||jkr"td|j|fd|_dS)Nr]rrizCRC error, computed %x, read %x)r`unpackrprrUr)rZfilecrcr r r _checkcrcs   zHexBin._checkcrccCs|d}|t|}|d}||dd}|dd}td|ddd}td|dd d|_td|d dd|_||_t|_||j_ ||j_ ||j_ t |_ dS) Nr  r] rz>l)rordrr`rrVrWFNamerrrrrYrZ)rrBZfnameresttypeZcreatorflagsr r r rs     zHexBin._readheadercGst|jtkr td|r|d}t||j}n|j}d}t||kr2|||t|}t||ks!|j||_|S)NzRead data at wrong timerr0)rZrYrminrVrBr)rnr~r r r rs   z HexBin.readcCs6|jtkr td|jr||j}|t|_dS)Nzclose_data at wrong time)rZrYrrVrrrjrZdummyr r r rks   zHexBin.close_datacGsZ|jtkr ||jtkrtd|r|d}t||j}n|j}|j||_||S)Nz Read resource data at wrong timer)rZrYrkrjrrrWr)rrr r r read_rsrcs    zHexBin.read_rsrccCsR|jdurdSz|jr||j}|Wd|_|jdSd|_|jwr+)rZrWrrrpr2rr r r r2s    z HexBin.closeN) rrr rrrrrrkrr2r r r r rus  rcCst|}|j}|s |j}t|d} |d}|sn||qWdn1s,wY||d}|rYt |d}|| |d}|sOn||qG| | dS)z6hexbin(infilename, outfilename) - Decode binhexed filerRTrmN) rrrrrrr1rkrr)r2)rnrorpr#r<rer r r rs0        r)rHrC contextlibrrr`r5warnr8__all__ ExceptionrrYrjrMr>rrr(r)contextmanagerr9r;rJrQrrqrzrrr r r r s<  (^+8 h