24 lines
451 B
C
24 lines
451 B
C
#ifndef SDBM_H
|
|
#define SDBM_H
|
|
|
|
#include <stdlib.h>
|
|
|
|
static unsigned long sdbm(char *str) {
|
|
unsigned long hash = 0;
|
|
|
|
for (int c = *str; c != 0; c = *str++)
|
|
hash = c + (hash << 6) + (hash << 16) - hash;
|
|
|
|
return hash;
|
|
}
|
|
|
|
static unsigned long sdbm_clean(char *str, size_t size) {
|
|
unsigned long hash = 0;
|
|
|
|
for (size_t i = 0; i < size + 1; i++)
|
|
hash = *str + (hash << 6) + (hash << 16) - hash;
|
|
|
|
return hash;
|
|
}
|
|
#endif
|