Add cast to malloc to calm cc when system headers decalre int malloc()
[p5sagit/p5-mst-13.2.git] / ext / SDBM_File / sdbm / hash.c
CommitLineData
463ee0b2 1/*
2 * sdbm - ndbm work-alike hashed database library
3 * based on Per-Aake Larson's Dynamic Hashing algorithms. BIT 18 (1978).
4 * author: oz@nexus.yorku.ca
5 * status: public domain. keep it that way.
6 *
7 * hashing routine
8 */
9
85e6fe83 10#include "config.h"
463ee0b2 11#include "sdbm.h"
12/*
13 * polynomial conversion ignoring overflows
14 * [this seems to work remarkably well, in fact better
15 * then the ndbm hash function. Replace at your own risk]
16 * use: 65599 nice.
17 * 65587 even better.
18 */
19long
20sdbm_hash(str, len)
21register char *str;
22register int len;
23{
24 register unsigned long n = 0;
25
26#ifdef DUFF
27
28#define HASHC n = *str++ + 65599 * n
29
30 if (len > 0) {
31 register int loop = (len + 8 - 1) >> 3;
32
33 switch(len & (8 - 1)) {
34 case 0: do {
35 HASHC; case 7: HASHC;
36 case 6: HASHC; case 5: HASHC;
37 case 4: HASHC; case 3: HASHC;
38 case 2: HASHC; case 1: HASHC;
39 } while (--loop);
40 }
41
42 }
43#else
44 while (len--)
45 n = *str++ + 65599 * n;
46#endif
47 return n;
48}