📄 lzhtool.h
字号:
#ifndef AFX_LZHTOOL_H__31F8AA01_3F84_11D4_8D96_8AB5A6462337__INCLUDED_
#define AFX_LZHTOOL_H__31F8AA01_3F84_11D4_8D96_8AB5A6462337__INCLUDED_
#include "Tool.h"
class CLzhTool : public CTool
{
//
// see LzhDecoder2.h
//
public:
CLzhTool() : CTool( "Lzh 夝搥" )
{
// CRC僥乕僽儖弶婜壔
for( WORD i=0,j,r; i!=256; i++ )
{
r = i;
for( j=0; j!=8; j++ )
{
if( r&1 ) r = ((r>>1)^0xA001);//CRCPOLY
else r>>=1;
}
crctable[i] = r;
}
}
bool IsType( const char* ext )
// {return 0==stricmp(ext,"lzh");}
{return 0==strcmp(ext,"lzh");} //fixed by uema2.
bool Check( const char* fname, unsigned long fsize );
bool Extract( const char* fname, const char* ddir );
private:
int FindHeader( const char* fname, const BYTE* hdr, DWORD siz );
bool ReadHeader( unsigned char* buf );
WORD crctable[256];
WORD crc;
BYTE sum;
void UpdateCRC( BYTE *p,int n )
{while( n-- )crc = crctable[(crc^(*p++))&0xff] ^ (crc >> 8);}
void UpdateSum( BYTE *p,int n )
{while( n-- )sum+=*(p++);}
int fread_crc( BYTE* p,int n)
{n=fread(p,1,n,lzh);if(n==-1)n=0;
UpdateCRC(p,n);UpdateSum(p,n);return n;}
// 尰嵼張棟拞偺奿擺僼傽僀儖偺忣曬偑儊儞僶偵擖傞
FILE *lzh,*out;
BYTE h_Level; // 僿僢僟儗儀儖
char h_FileName[MAX_PATH*2]; // 僼傽僀儖柤(僷僗晅偒)
char h_Method[6]; // 埑弅朄 "-lh5-" 側偳丅
DWORD h_CompSize; // 埑弅偝傟偨僒僀僘
DWORD h_OrigSize; // 尦偺僒僀僘
WORD h_Attrib; // 懏惈
DWORD h_Update; // 峏怴擔帪(h0,h1:ftime h2:time_t)
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -