xref: /unit/src/nxt_djb_hash.c (revision 0:a63ceefd6ab0)
1 
2 /*
3  * Copyright (C) Igor Sysoev
4  * Copyright (C) NGINX, Inc.
5  */
6 
7 #include <nxt_main.h>
8 
9 
10 uint32_t
nxt_djb_hash(const void * data,size_t len)11 nxt_djb_hash(const void *data, size_t len)
12 {
13     uint32_t      hash;
14     const u_char  *p;
15 
16     p = data;
17     hash = NXT_DJB_HASH_INIT;
18 
19     while (len != 0) {
20         hash = nxt_djb_hash_add(hash, *p++);
21         len--;
22     }
23 
24     return hash;
25 }
26 
27 
28 uint32_t
nxt_djb_hash_lowcase(const void * data,size_t len)29 nxt_djb_hash_lowcase(const void *data, size_t len)
30 {
31     u_char        c;
32     uint32_t      hash;
33     const u_char  *p;
34 
35     p = data;
36     hash = NXT_DJB_HASH_INIT;
37 
38     while (len != 0) {
39         c = *p++;
40         hash = nxt_djb_hash_add(hash, nxt_lowcase(c));
41         len--;
42     }
43 
44     return hash;
45 }
46