diff options
Diffstat (limited to 'cdb_hash.c')
-rw-r--r-- | cdb_hash.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/cdb_hash.c b/cdb_hash.c new file mode 100644 index 0000000..71102e1 --- /dev/null +++ b/cdb_hash.c @@ -0,0 +1,21 @@ +/* Public domain. */ + +#include "cdb.h" + +uint32 cdb_hashadd(uint32 h,unsigned char c) +{ + h += (h << 5); + return h ^ c; +} + +uint32 cdb_hash(const char *buf,unsigned int len) +{ + uint32 h; + + h = CDB_HASHSTART; + while (len) { + h = cdb_hashadd(h,*buf++); + --len; + } + return h; +} |