Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
typedef struct Whack		Whack;
2
typedef struct Unwhack		Unwhack;
3
 
4
enum
5
{
6
	WhackStats	= 8,
7
	WhackErrLen	= 64,		/* max length of error message from thwack or unthwack */
8
	WhackMaxOff	= 16*1024,	/* max allowed offset */
9
 
10
	HashLog		= 14,
11
	HashSize	= 1<<HashLog,
12
	HashMask	= HashSize - 1,
13
 
14
	MinMatch	= 3,		/* shortest match possible */
15
 
16
	MinDecode	= 8,		/* minimum bits to decode a match or lit; >= 8 */
17
 
18
	MaxSeqMask	= 8,		/* number of bits in coding block mask */
19
	MaxSeqStart	= 256		/* max offset of initial coding block */
20
};
21
 
22
struct Whack
23
{
24
	ushort		begin;			/* time of first byte in hash */
25
	ushort		hash[HashSize];
26
	ushort		next[WhackMaxOff];
27
	uchar		*data;
28
};
29
 
30
struct Unwhack
31
{
32
	char		err[WhackErrLen];
33
};
34
 
35
void	whackinit(Whack*, int level);
36
void	unwhackinit(Unwhack*);
37
int	whack(Whack*, uchar *dst, uchar *src, int nsrc, ulong stats[WhackStats]);
38
int	unwhack(Unwhack*, uchar *dst, int ndst, uchar *src, int nsrc);
39
 
40
int	whackblock(uchar *dst, uchar *src, int ssize);