blob: d871b3f205c264d4f6314cd52c701b29a3f3c590 (plain
Implementing the rsync rolling checksum algorithm. Read it's description first:
SUBTITLE Construction and initial checksum calculation
The constructor takes a pointer to a block of data and a size, and calculates the checksum of this block. It can now be "rolled forward" to find the checksum of the block of the same size, one byte forward, with minimal calculation.
Returns the checksum for the current block.
This function takes the byte at the start of the current block, and the last byte of the block it's rolling forward to, and moves the checksum on.
If the block is
char *pBlock = <something>;
with size s, then it should be called with
and now GetChecksum will return the checksum of the block (pBlock+1) of size s.
Similar to RollForward(), but is more efficient for skipping several bytes at once. Takes pointers to the data buffer rather than the actual data values.