annotate src/core/ngx_crc32.h @ 790:f9a971440614

ngx_crc32()
author Igor Sysoev <igor@sysoev.ru>
date Wed, 18 Oct 2006 19:00:21 +0000
parents
children 8d39da951bbd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
790
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2 /*
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
3 * Copyright (C) Igor Sysoev
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
4 */
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
5
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
6
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
7 #ifndef _NGX_CRC32_H_INCLUDED_
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 #define _NGX_CRC32_H_INCLUDED_
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11 #include <ngx_config.h>
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
12 #include <ngx_core.h>
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
13
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
14
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
15 extern uint32_t ngx_crc32_table[];
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
16
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
17
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
18 static ngx_inline uint32_t
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
19 ngx_crc32(u_char *p, size_t len)
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
20 {
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
21 uint32_t crc;
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
22
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
23 crc = 0xffffffff;
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
24
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
25 while (len--) {
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
26 crc = ngx_crc32_table[(crc ^ *p++) & 0xff] ^ (crc >> 8);
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
27 }
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
28
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
29 return crc ^ 0xffffffff;
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
30 }
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
31
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
32
f9a971440614 ngx_crc32()
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
33 #endif /* _NGX_CRC32_H_INCLUDED_ */