public
Description: A lua binding to the tinycdb library by Michael Tokarev
Homepage: http://asbradbury.org/projects/lua-tinycdb/
Clone URL: git://github.com/asb/lua-tinycdb.git
lua-tinycdb / cdb_hash.c
100644 20 lines (17 sloc) 0.487 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* $Id: cdb_hash.c,v 1.5 2003/11/03 16:42:41 mjt Exp $
* cdb hashing routine
*
* This file is a part of tinycdb package by Michael Tokarev, mjt@corpit.ru.
* Public domain.
*/
 
#include "cdb.h"
 
unsigned
cdb_hash(const void *buf, unsigned len)
{
  register const unsigned char *p = (const unsigned char *)buf;
  register const unsigned char *end = p + len;
  register unsigned hash = 5381; /* start value */
  while (p < end)
    hash = (hash + (hash << 5)) ^ *p++;
  return hash;
}