99 const u_int8_t * dstend = dst + dstlen;
100 const u_int8_t * srcend = src + srclen;
114 if (((flags >>= 1) & 0x100) == 0) {
115 if (src < srcend) c = *src++;
else break;
119 if (src < srcend) c = *src++;
else break;
120 if (dst < dstend) *dst++ = c;
else break;
124 if (src < srcend) i = *src++;
else break;
125 if (src < srcend) j = *src++;
else break;
126 i |= ((j & 0xF0) << 4);
128 for (k = 0; k <= j; k++) {
129 c = text_buf[(i + k) & (
N - 1)];
130 if (dst < dstend) *dst++ = c;
else break;
260 int i, len, r, s, last_match_length, code_buf_ptr;
272 if (!sp)
goto finish;
283 code_buf_ptr = mask = 1;
289 for (len = 0; len <
F && src < srcend; len++)
299 for (i = 1; i <=
F; i++)
300 insert_node(sp, r - i);
314 code_buf[code_buf_ptr++] = sp->
text_buf[r];
318 code_buf[code_buf_ptr++] = (
u_int8_t)
322 if ((mask <<= 1) == 0) {
324 for (i = 0; i < code_buf_ptr; i++)
326 *dst++ = code_buf[i];
330 code_buf_ptr = mask = 1;
333 for (i = 0; i < last_match_length && src < srcend; i++) {
346 s = (s + 1) & (
N - 1);
347 r = (r + 1) & (
N - 1);
352 while (i++ < last_match_length) {
356 s = (s + 1) & (
N - 1);
357 r = (r + 1) & (
N - 1);
364 if (code_buf_ptr > 1) {
365 for (i = 0; i < code_buf_ptr; i++)
367 *dst++ = code_buf[i];