Mercurial > dovecot > core-2.2
changeset 13222:83699b38229b
liblib: Added generic mem_hash()
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 12 Aug 2011 17:40:19 +0300 |
parents | bf55c954ba3b |
children | 271bbac3047d |
files | src/lib/hash.c src/lib/hash.h |
diffstat | 2 files changed, 19 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/hash.c Thu Aug 11 18:10:33 2011 +0300 +++ b/src/lib/hash.c Fri Aug 12 17:40:19 2011 +0300 @@ -511,3 +511,20 @@ return h; } + +unsigned int mem_hash(const void *p, unsigned int size) +{ + const unsigned char *s = p; + unsigned int i, g, h = 0; + + for (i = 0; i < size; i++) { + h = (h << 4) + *s; + if ((g = h & 0xf0000000UL)) { + h = h ^ (g >> 24); + h = h ^ g; + } + s++; + } + return h; +} +
--- a/src/lib/hash.h Thu Aug 11 18:10:33 2011 +0300 +++ b/src/lib/hash.h Fri Aug 12 17:40:19 2011 +0300 @@ -53,5 +53,7 @@ /* hash function for strings */ unsigned int str_hash(const void *p) ATTR_PURE; unsigned int strcase_hash(const void *p) ATTR_PURE; +/* a generic hash for a given memory block */ +unsigned int mem_hash(const void *p, unsigned int size) ATTR_PURE; #endif