Page Menu
Home
GnuPG
Search
Configure Global Search
Log In
Files
F23558421
adler32.c
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Size
1 KB
Subscribers
None
adler32.c
View Options
/* adler32.c -- compute the Adler-32 checksum of a data stream
* Copyright (C) 1995-1998 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* @(#) $Id$ */
#include
"zlib.h"
#define BASE 65521L
/* largest prime smaller than 65536 */
#define NMAX 5552
/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
#define DO1(buf,i) {s1 += buf[i]; s2 += s1;}
#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1);
#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2);
#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4);
#define DO16(buf) DO8(buf,0); DO8(buf,8);
/* ========================================================================= */
uLong
ZEXPORT
adler32
(
adler
,
buf
,
len
)
uLong
adler
;
const
Bytef
*
buf
;
uInt
len
;
{
unsigned
long
s1
=
adler
&
0xffff
;
unsigned
long
s2
=
(
adler
>>
16
)
&
0xffff
;
int
k
;
if
(
buf
==
Z_NULL
)
return
1L
;
while
(
len
>
0
)
{
k
=
len
<
NMAX
?
len
:
NMAX
;
len
-=
k
;
while
(
k
>=
16
)
{
DO16
(
buf
);
buf
+=
16
;
k
-=
16
;
}
if
(
k
!=
0
)
do
{
s1
+=
*
buf
++
;
s2
+=
s1
;
}
while
(
--
k
);
s1
%=
BASE
;
s2
%=
BASE
;
}
return
(
s2
<<
16
)
|
s1
;
}
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Sat, May 31, 7:59 AM (9 h, 20 m)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
6c/d9/81b9a3de5625b58ee4ba7341ba90
Attached To
rG GnuPG
Event Timeline
Log In to Comment