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}