ReactOS
0.4.16-dev-59-gd481587
adler32.c
Go to the documentation of this file.
1
/* adler32.c -- compute the Adler-32 checksum of a data stream
2
* Copyright (C) 1995-2002 Mark Adler
3
* For conditions of distribution and use, see copyright notice in zlib.h
4
*/
5
6
/* @(#) $Id$ */
7
8
#include "
zlib.h
"
9
10
#define BASE 65521L
/* largest prime smaller than 65536 */
11
#define NMAX 5552
12
/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
13
14
#define DO1(buf,i) {s1 += buf[i]; s2 += s1;}
15
#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1);
16
#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2);
17
#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4);
18
#define DO16(buf) DO8(buf,0); DO8(buf,8);
19
20
/* ========================================================================= */
21
ZEXPORT
(
uLong
)
adler32
(
/* adler, buf, len) */
22
uLong
adler,
23
const
Bytef
*
buf
,
24
uInt
len
)
25
{
26
unsigned
long
s1
= adler & 0xffff;
27
unsigned
long
s2
= (adler >> 16) & 0xffff;
28
int
k
;
29
30
if
(
buf
==
Z_NULL
)
return
1L;
31
32
while
(
len
> 0) {
33
k
=
len
<
NMAX
?
len
:
NMAX
;
34
len
-=
k
;
35
while
(
k
>= 16) {
36
DO16
(
buf
);
37
buf
+= 16;
38
k
-= 16;
39
}
40
if
(
k
!= 0)
do
{
41
s1
+= *
buf
++;
42
s2
+=
s1
;
43
}
while
(--
k
);
44
s1
%=
BASE
;
45
s2
%=
BASE
;
46
}
47
return
(
s2
<< 16) |
s1
;
48
}
adler32
static uLong adler32(uLong adler, const Bytef *buf, uInt len)
Definition:
inflate.c:72
uLong
unsigned long uLong
Definition:
zlib.h:39
uInt
unsigned int uInt
Definition:
zlib.h:38
Z_NULL
#define Z_NULL
Definition:
zlib.h:149
Bytef
Byte FAR Bytef
Definition:
zlib.h:41
NMAX
#define NMAX
Definition:
adler32.c:11
DO16
#define DO16(buf)
Definition:
adler32.c:18
BASE
#define BASE
Definition:
adler32.c:10
buf
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition:
glext.h:7751
len
GLenum GLsizei len
Definition:
glext.h:6722
s1
struct S1 s1
s2
struct S2 s2
k
int k
Definition:
mpi.c:3369
zlib.h
ZEXPORT
#define ZEXPORT
Definition:
zconf.h:386
sdk
lib
3rdparty
freetype
src
gzip
adler32.c
Generated on Thu Sep 19 2024 06:12:55 for ReactOS by
1.9.6