summaryrefslogtreecommitdiff
path: root/src/libstddjb/cdb_hash.c
blob: 9eedf54a4790a1b5c6d7b70c8149656ec2500e94 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* ISC license. */

#include <skalibs/uint32.h>
#include <skalibs/cdb.h>

uint32 cdb_hashadd (uint32 h, unsigned char c)
{
  h += (h << 5) ;
  return h ^ c ;
}

uint32 cdb_hash (char const *buf, unsigned int len)
{
  uint32 h = CDB_HASHSTART ;
  while (len--) h = cdb_hashadd(h, *buf++) ;
  return h ;
}