wm: teppich

ref: 41c7b8cc5ebc3000271bc6b5d9931cc959a8d663
dir: /libc/adler32.c/

View raw version
#include <u.h>
#include <libc.h>

long
adler32(char *data)
{
	const int prime = 65521;
	int i = 0;
	int a = 0, b = 1;
	while (i < strlen(data))
	{
		b += data[i];
		a += b;
		i++;
	}
	b = b % prime;
	a = a % prime;
	return(b << 16 | a);
}