]>
git.saurik.com Git - wxWidgets.git/blob - src/zlib/adler32.c
   1 /* adler32.c -- compute the Adler-32 checksum of a data stream 
   2  * Copyright (C) 1995-1998 Mark Adler 
   3  * For conditions of distribution and use, see copyright notice in zlib.h 
   8 #include "../zlib/zlib.h" 
  10 #define BASE 65521L /* largest prime smaller than 65536 */ 
  12 /* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */ 
  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); 
  20 /* ========================================================================= */ 
  21 #if defined(__VISAGECPP__) /* Visualage can't handle this antiquated interface */ 
  22 uLong ZEXPORT 
adler32 (uLong adler
, const Bytef
* buf
, uInt len
) 
  24 uLong ZEXPORT 
adler32(adler
, buf
, len
) 
  30     unsigned long s1 
= adler 
& 0xffff; 
  31     unsigned long s2 
= (adler 
>> 16) & 0xffff; 
  34     if (buf 
== Z_NULL
) return 1L; 
  37         k 
= len 
< NMAX 
? len 
: NMAX
; 
  51     return (s2 
<< 16) | s1
;