typedef struct Whack Whack; typedef struct Unwhack Unwhack; enum { WhackStats = 8, WhackErrLen = 64, /* max length of error message from thwack or unthwack */ WhackMaxOff = 16*1024, /* max allowed offset */ HashLog = 14, HashSize = 1<= 8 */ MaxSeqMask = 8, /* number of bits in coding block mask */ MaxSeqStart = 256 /* max offset of initial coding block */ }; struct Whack { ushort begin; /* time of first byte in hash */ ushort hash[HashSize]; ushort next[WhackMaxOff]; uchar *data; }; struct Unwhack { char err[WhackErrLen]; }; void whackinit(Whack*, int level); void unwhackinit(Unwhack*); int whack(Whack*, uchar *dst, uchar *src, int nsrc, ulong stats[WhackStats]); int unwhack(Unwhack*, uchar *dst, int ndst, uchar *src, int nsrc); int whackblock(uchar *dst, uchar *src, int ssize);