adler32.c (7648bc9fee8dec6cb3c4941e0165a930fbe8dcb0) | adler32.c (4717628ed859513a3262ea68259d0605f39de0b3) |
---|---|
1/* adler32.c -- compute the Adler-32 checksum of a data stream 2 * Copyright (C) 1995-2011, 2016 Mark Adler 3 * For conditions of distribution and use, see copyright notice in zlib.h 4 */ 5 6/* @(#) $Id$ */ 7 8#include "zutil.h" 9 | 1/* adler32.c -- compute the Adler-32 checksum of a data stream 2 * Copyright (C) 1995-2011, 2016 Mark Adler 3 * For conditions of distribution and use, see copyright notice in zlib.h 4 */ 5 6/* @(#) $Id$ */ 7 8#include "zutil.h" 9 |
10local uLong adler32_combine_ OF((uLong adler1, uLong adler2, z_off64_t len2)); 11 | |
12#define BASE 65521U /* largest prime smaller than 65536 */ 13#define NMAX 5552 14/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */ 15 16#define DO1(buf,i) {adler += (buf)[i]; sum2 += adler;} 17#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1); 18#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2); 19#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4); --- 35 unchanged lines hidden (view full) --- 55 } while (0) 56#else 57# define MOD(a) a %= BASE 58# define MOD28(a) a %= BASE 59# define MOD63(a) a %= BASE 60#endif 61 62/* ========================================================================= */ | 10#define BASE 65521U /* 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) {adler += (buf)[i]; sum2 += adler;} 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); --- 35 unchanged lines hidden (view full) --- 53 } while (0) 54#else 55# define MOD(a) a %= BASE 56# define MOD28(a) a %= BASE 57# define MOD63(a) a %= BASE 58#endif 59 60/* ========================================================================= */ |
63uLong ZEXPORT adler32_z(adler, buf, len) 64 uLong adler; 65 const Bytef *buf; 66 z_size_t len; 67{ | 61uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, z_size_t len) { |
68 unsigned long sum2; 69 unsigned n; 70 71 /* split Adler-32 into component sums */ 72 sum2 = (adler >> 16) & 0xffff; 73 adler &= 0xffff; 74 75 /* in case user likes doing a byte at a time, keep it fast */ --- 50 unchanged lines hidden (view full) --- 126 MOD(sum2); 127 } 128 129 /* return recombined sums */ 130 return adler | (sum2 << 16); 131} 132 133/* ========================================================================= */ | 62 unsigned long sum2; 63 unsigned n; 64 65 /* split Adler-32 into component sums */ 66 sum2 = (adler >> 16) & 0xffff; 67 adler &= 0xffff; 68 69 /* in case user likes doing a byte at a time, keep it fast */ --- 50 unchanged lines hidden (view full) --- 120 MOD(sum2); 121 } 122 123 /* return recombined sums */ 124 return adler | (sum2 << 16); 125} 126 127/* ========================================================================= */ |
134uLong ZEXPORT adler32(adler, buf, len) 135 uLong adler; 136 const Bytef *buf; 137 uInt len; 138{ | 128uLong ZEXPORT adler32(uLong adler, const Bytef *buf, uInt len) { |
139 return adler32_z(adler, buf, len); 140} 141 142/* ========================================================================= */ | 129 return adler32_z(adler, buf, len); 130} 131 132/* ========================================================================= */ |
143local uLong adler32_combine_(adler1, adler2, len2) 144 uLong adler1; 145 uLong adler2; 146 z_off64_t len2; 147{ | 133local uLong adler32_combine_(uLong adler1, uLong adler2, z_off64_t len2) { |
148 unsigned long sum1; 149 unsigned long sum2; 150 unsigned rem; 151 152 /* for negative len, return invalid adler32 as a clue for debugging */ 153 if (len2 < 0) 154 return 0xffffffffUL; 155 --- 8 unchanged lines hidden (view full) --- 164 if (sum1 >= BASE) sum1 -= BASE; 165 if (sum1 >= BASE) sum1 -= BASE; 166 if (sum2 >= ((unsigned long)BASE << 1)) sum2 -= ((unsigned long)BASE << 1); 167 if (sum2 >= BASE) sum2 -= BASE; 168 return sum1 | (sum2 << 16); 169} 170 171/* ========================================================================= */ | 134 unsigned long sum1; 135 unsigned long sum2; 136 unsigned rem; 137 138 /* for negative len, return invalid adler32 as a clue for debugging */ 139 if (len2 < 0) 140 return 0xffffffffUL; 141 --- 8 unchanged lines hidden (view full) --- 150 if (sum1 >= BASE) sum1 -= BASE; 151 if (sum1 >= BASE) sum1 -= BASE; 152 if (sum2 >= ((unsigned long)BASE << 1)) sum2 -= ((unsigned long)BASE << 1); 153 if (sum2 >= BASE) sum2 -= BASE; 154 return sum1 | (sum2 << 16); 155} 156 157/* ========================================================================= */ |
172uLong ZEXPORT adler32_combine(adler1, adler2, len2) 173 uLong adler1; 174 uLong adler2; 175 z_off_t len2; 176{ | 158uLong ZEXPORT adler32_combine(uLong adler1, uLong adler2, z_off_t len2) { |
177 return adler32_combine_(adler1, adler2, len2); 178} 179 | 159 return adler32_combine_(adler1, adler2, len2); 160} 161 |
180uLong ZEXPORT adler32_combine64(adler1, adler2, len2) 181 uLong adler1; 182 uLong adler2; 183 z_off64_t len2; 184{ | 162uLong ZEXPORT adler32_combine64(uLong adler1, uLong adler2, z_off64_t len2) { |
185 return adler32_combine_(adler1, adler2, len2); 186} | 163 return adler32_combine_(adler1, adler2, len2); 164} |