/* 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