/*  Copyright (c) 2001, 2002, 2005 Sendmail, Inc. and its suppliers.
 *  All rights reserved.
 */

/* $Id: data.c,v 1.2 2005/04/14 17:21:58 ca Exp $ */

#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include "data.h"

#define REPEATS	280

/* do some useless computation on s[0..l-1] */
int
data_comp(char *s, size_t l, size_t rep)
{
	size_t i, j;
	long int h, k;

	if (rep <= 1)
		rep = REPEATS;
	h = 0;
	for (i = 0; i < l; i++)
	{
		int c, d;

		c = s[i];
		if (i > 0)
			j = i - 1;
		else if (i < l - 1)
			j = i + 1;
		else
			j = i;
		d = s[j];
		for (j = 0; j < rep; j++)
		{
			h += c | d | j;
			k = (c << 7) | d;
			k += (d ^ 0xaa) & c;
			k -= (c >> 3) | (d << 3);
			h += k & (c << (d & 0x03));
		}
	}
	return (int) h;
}


syntax highlighted by Code2HTML, v. 0.9.1