/* 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 #include #include #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; }