13b7203622 2011-02-23 kinaba: #ifndef AFX_ARCCPT_H__B5D13025_2DA9_4489_8BCB_ACB84B908A84__INCLUDED_ 13b7203622 2011-02-23 kinaba: #define AFX_ARCCPT_H__B5D13025_2DA9_4489_8BCB_ACB84B908A84__INCLUDED_ 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: #include "Archiver.h" 13b7203622 2011-02-23 kinaba: #include "SubDlg.h" 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: class CArcCpt : public CArchiver 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: public: 13b7203622 2011-02-23 kinaba: CArcCpt() : CArchiver("cpt.bin.") {} 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: private: 13b7203622 2011-02-23 kinaba: int v_load(){return aCheck|aMelt|aList|aMeltEach;} 13b7203622 2011-02-23 kinaba: bool v_check( const kiPath& aname ); 13b7203622 2011-02-23 kinaba: int v_contents( const kiPath& aname, kiPath& dname ); 13b7203622 2011-02-23 kinaba: int v_melt( const arcname& aname, const kiPath& ddir, const aflArray* files ); 13b7203622 2011-02-23 kinaba: bool v_list( const arcname& aname, aflArray& files ); 13b7203622 2011-02-23 kinaba: kiStr v_name(const char*) const { return "CPT"; } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: CArcProgressDlg* pdlg; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //-- cpt archive operations ---------------- 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: unsigned int m_nMacBinOffset; 13b7203622 2011-02-23 kinaba: unsigned int m_nIndexPos; 13b7203622 2011-02-23 kinaba: unsigned int dataULen, dataCLen; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: kiFile cpt,out; 13b7203622 2011-02-23 kinaba: unsigned char tmp[270]; // temp 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: bool read_main_hdr(); 13b7203622 2011-02-23 kinaba: bool check_index_crc(); 13b7203622 2011-02-23 kinaba: bool operation_for_each( bool o_list=true, aflArray* files=NULL ); 13b7203622 2011-02-23 kinaba: bool recurse( bool o_list, aflArray* files, kiPath& path, int base, int num ); 13b7203622 2011-02-23 kinaba: void cptmelt( bool isRL ); 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //-- lzh - rle ------------------------------- 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: #define CIRCSIZE 8192 13b7203622 2011-02-23 kinaba: class sf_entry 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: public: 13b7203622 2011-02-23 kinaba: int Value; 13b7203622 2011-02-23 kinaba: int BitLength; 13b7203622 2011-02-23 kinaba: }; 13b7203622 2011-02-23 kinaba: class node 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: public: 13b7203622 2011-02-23 kinaba: int flag, byte; 13b7203622 2011-02-23 kinaba: node *one, *zero; 13b7203622 2011-02-23 kinaba: }; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: void cpt_outch( unsigned char ch ); 13b7203622 2011-02-23 kinaba: BYTE cpt_outstat,cpt_savechar; 13b7203622 2011-02-23 kinaba: void cpt_rle_lzh(); 13b7203622 2011-02-23 kinaba: int cpt_get6bits(); 13b7203622 2011-02-23 kinaba: int cpt_getbit(); 13b7203622 2011-02-23 kinaba: void cpt_readHuff(int size,node* Hufftree); 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: int gethuffbyte(node* l_nodelist); 13b7203622 2011-02-23 kinaba: #define SLACK 6 13b7203622 2011-02-23 kinaba: node cpt_Hufftree[512 + SLACK],cpt_LZlength[128 + SLACK],cpt_LZoffs[256 + SLACK]; 13b7203622 2011-02-23 kinaba: unsigned char cpt_LZbuff[CIRCSIZE]; 13b7203622 2011-02-23 kinaba: unsigned int cpt_LZptr; 13b7203622 2011-02-23 kinaba: unsigned long cpt_newbits; 13b7203622 2011-02-23 kinaba: int cpt_bitsavail; 13b7203622 2011-02-23 kinaba: int cpt_blocksize; 13b7203622 2011-02-23 kinaba: }; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: #endif