Lines Matching refs:zlib
2011 struct zlib struct
2041 zlib_flevel(struct zlib *zlib) in zlib_flevel() argument
2043 switch (zlib->header[1] >> 6) in zlib_flevel()
2056 zlib_rc(struct zlib *zlib) in zlib_rc() argument
2059 switch (zlib->rc) in zlib_rc()
2075 zlib_message(struct zlib *zlib, int unexpected) in zlib_message() argument
2078 if (zlib->global->errors) in zlib_message()
2080 const char *reason = zlib->z.msg; in zlib_message()
2085 fputs(zlib->file->file_name, stderr); in zlib_message()
2087 type_name(zlib->chunk->chunk_type, stderr); in zlib_message()
2089 unexpected ? "unexpected " : "", zlib->rc, zlib_rc(zlib), reason); in zlib_message()
2094 zlib_end(struct zlib *zlib) in zlib_end() argument
2099 if (!zlib->global->quiet) in zlib_end()
2101 if (zlib->ok_bits < 16) /* stream was read ok */ in zlib_end()
2105 if (zlib->cksum) in zlib_end()
2108 else if (zlib->ok_bits > zlib->file_bits) in zlib_end()
2111 else if (zlib->ok_bits == zlib->file_bits) in zlib_end()
2121 type_name(zlib->chunk->chunk_type, stdout); in zlib_end()
2122 printf(" %s %s %d %d ", reason, zlib_flevel(zlib), zlib->file_bits, in zlib_end()
2123 zlib->ok_bits); in zlib_end()
2124 uarb_print(zlib->compressed_bytes, zlib->compressed_digits, stdout); in zlib_end()
2126 uarb_print(zlib->uncompressed_bytes, zlib->uncompressed_digits, in zlib_end()
2129 fputs(zlib->file->file_name, stdout); in zlib_end()
2146 type_name(zlib->chunk->chunk_type, stdout); in zlib_end()
2147 printf(" SKP %s %d %s ", zlib_flevel(zlib), zlib->file_bits, in zlib_end()
2148 zlib_rc(zlib)); in zlib_end()
2149 uarb_print(zlib->compressed_bytes, zlib->compressed_digits, stdout); in zlib_end()
2151 emit_string(zlib->z.msg ? zlib->z.msg : "[no_message]", stdout); in zlib_end()
2153 fputs(zlib->file->file_name, stdout); in zlib_end()
2158 if (zlib->state >= 0) in zlib_end()
2160 zlib->rc = inflateEnd(&zlib->z); in zlib_end()
2162 if (zlib->rc != Z_OK) in zlib_end()
2163 zlib_message(zlib, 1/*unexpected*/); in zlib_end()
2166 CLEAR(*zlib); in zlib_end()
2170 zlib_reset(struct zlib *zlib, int window_bits) in zlib_reset() argument
2173 assert(zlib->state >= 0); /* initialized by zlib_init */ in zlib_reset()
2175 zlib->z.next_in = Z_NULL; in zlib_reset()
2176 zlib->z.avail_in = 0; in zlib_reset()
2177 zlib->z.next_out = Z_NULL; in zlib_reset()
2178 zlib->z.avail_out = 0; in zlib_reset()
2180 zlib->window_bits = window_bits; in zlib_reset()
2181 zlib->compressed_digits = 0; in zlib_reset()
2182 zlib->uncompressed_digits = 0; in zlib_reset()
2184 zlib->state = 0; /* initialized, once */ in zlib_reset()
2185 zlib->rc = inflateReset2(&zlib->z, 0); in zlib_reset()
2186 if (zlib->rc != Z_OK) in zlib_reset()
2188 zlib_message(zlib, 1/*unexpected*/); in zlib_reset()
2196 zlib_init(struct zlib *zlib, struct IDAT *idat, struct chunk *chunk, in zlib_init() argument
2200 CLEAR(*zlib); in zlib_init()
2202 zlib->idat = idat; in zlib_init()
2203 zlib->chunk = chunk; in zlib_init()
2204 zlib->file = chunk->file; in zlib_init()
2205 zlib->global = chunk->global; in zlib_init()
2206 zlib->rewrite_offset = offset; /* never changed for this zlib */ in zlib_init()
2209 zlib->z.next_in = Z_NULL; in zlib_init()
2210 zlib->z.avail_in = 0; in zlib_init()
2211 zlib->z.zalloc = Z_NULL; in zlib_init()
2212 zlib->z.zfree = Z_NULL; in zlib_init()
2213 zlib->z.opaque = Z_NULL; in zlib_init()
2215 zlib->state = -1; in zlib_init()
2216 zlib->window_bits = window_bits; in zlib_init()
2218 zlib->compressed_digits = 0; in zlib_init()
2219 zlib->uncompressed_digits = 0; in zlib_init()
2224 zlib->file_bits = 24; in zlib_init()
2225 zlib->ok_bits = 16; /* unset */ in zlib_init()
2226 zlib->cksum = 0; /* set when a checksum error is detected */ in zlib_init()
2231 zlib->rc = inflateInit2(&zlib->z, 0); in zlib_init()
2232 if (zlib->rc != Z_OK) in zlib_init()
2234 zlib_message(zlib, 1/*unexpected*/); in zlib_init()
2240 zlib->state = 0; /* initialized */ in zlib_init()
2267 zlib_advance(struct zlib *zlib, png_uint_32 nbytes) in zlib_advance() argument
2283 int state = zlib->state; in zlib_advance()
2286 struct file *file = zlib->file; in zlib_advance()
2302 int new_bits = zlib->window_bits; in zlib_advance()
2304 zlib->file_bits = file_bits; in zlib_advance()
2312 zlib->window_bits = ((file_bits > 15) ? 15 : file_bits); in zlib_advance()
2318 zlib->header[0] = bIn; in zlib_advance()
2319 zlib->state = state = 1; in zlib_advance()
2327 b2 += 0x1f - ((zlib->header[0] << 8) + b2) % 0x1f; in zlib_advance()
2335 if (zlib->file_bits == zlib->window_bits) in zlib_advance()
2336 zlib->cksum = 1; in zlib_advance()
2342 zlib->header[1] = bIn; in zlib_advance()
2343 zlib->state = state = 2; in zlib_advance()
2356 zlib->z.next_in = &bIn; in zlib_advance()
2357 zlib->z.avail_in = 1; in zlib_advance()
2358 zlib->z.next_out = &bOut; in zlib_advance()
2359 zlib->z.avail_out = 0; /* Initially */ in zlib_advance()
2372 zlib->z.next_out = &bOut, in zlib_advance()
2373 zlib->z.avail_out = 1, in zlib_advance()
2376 zlib->rc = inflate(&zlib->z, flush); in zlib_advance()
2377 out_bytes -= zlib->z.avail_out; in zlib_advance()
2379 switch (zlib->rc) in zlib_advance()
2382 if (zlib->z.avail_out == 0) in zlib_advance()
2385 if (zlib->z.avail_in == 0) in zlib_advance()
2391 zlib_message(zlib, 1/*unexpected*/); in zlib_advance()
2397 assert(zlib->z.avail_out == 0 || zlib->z.avail_in == 0); in zlib_advance()
2402 zlib->state = 3; /* end of stream */ in zlib_advance()
2407 zlib_message(zlib, 0/*stream error*/); in zlib_advance()
2413 if (zlib->z.msg != NULL && in zlib_advance()
2414 strcmp(zlib->z.msg, "invalid distance too far back") == 0) in zlib_advance()
2422 zlib_message(zlib, 0/*stream error*/); in zlib_advance()
2434 zlib->uncompressed_digits = uarb_add32(zlib->uncompressed_bytes, in zlib_advance()
2435 zlib->uncompressed_digits, out_bytes); in zlib_advance()
2441 assert(zlib->z.avail_in == 0 || endrc != ZLIB_OK); in zlib_advance()
2443 in_bytes += 1 - zlib->z.avail_in; in zlib_advance()
2449 zlib->compressed_digits = uarb_add32(zlib->compressed_bytes, in zlib_advance()
2450 zlib->compressed_digits, in_bytes - zlib->z.avail_in); in zlib_advance()
2455 if (endrc == ZLIB_STREAM_END && zlib->window_bits < zlib->ok_bits) in zlib_advance()
2457 struct chunk *chunk = zlib->chunk; in zlib_advance()
2460 zlib->uncompressed_bytes, zlib->uncompressed_digits); in zlib_advance()
2462 zlib->compressed_bytes, zlib->compressed_digits); in zlib_advance()
2463 chunk->rewrite_buffer[0] = zlib->header[0]; in zlib_advance()
2464 chunk->rewrite_buffer[1] = zlib->header[1]; in zlib_advance()
2466 if (zlib->window_bits != zlib->file_bits || zlib->cksum) in zlib_advance()
2469 chunk->rewrite_offset = zlib->rewrite_offset; in zlib_advance()
2482 zlib->extra_bytes = nbytes - in_bytes; in zlib_advance()
2483 zlib->ok_bits = zlib->window_bits; in zlib_advance()
2490 zlib_run(struct zlib *zlib) in zlib_run() argument
2500 zlib->extra_bytes = 0; in zlib_run()
2502 if (zlib->idat != NULL) in zlib_run()
2504 struct IDAT_list *list = zlib->idat->idat_list_head; in zlib_run()
2505 struct IDAT_list *last = zlib->idat->idat_list_tail; in zlib_run()
2511 assert(zlib->rewrite_offset == 0); in zlib_run()
2526 skip_12(zlib->file); in zlib_run()
2530 rc = zlib_advance(zlib, list->lengths[i]); in zlib_run()
2542 if (zlib->global->errors && zlib->extra_bytes == 0) in zlib_run()
2552 chunk_message(zlib->chunk, in zlib_run()
2570 list->lengths[i] -= zlib->extra_bytes; in zlib_run()
2572 zlib->idat->idat_list_tail = list; in zlib_run()
2590 struct chunk *chunk = zlib->chunk; in zlib_run()
2593 assert(zlib->rewrite_offset < chunk->chunk_length); in zlib_run()
2595 rc = zlib_advance(zlib, chunk->chunk_length - zlib->rewrite_offset); in zlib_run()
2602 chunk->chunk_length -= zlib->extra_bytes; in zlib_run()
2623 struct zlib zlib; in zlib_check() local
2629 if (zlib_init(&zlib, file->idat, file->chunk, 0/*window bits*/, offset)) in zlib_check()
2634 rc = zlib_run(&zlib); in zlib_check()
2641 min_bits = zlib.window_bits + 1; in zlib_check()
2646 if (!zlib.global->optimize_zlib && in zlib_check()
2647 zlib.window_bits == zlib.file_bits && !zlib.cksum) in zlib_check()
2652 zlib_end(&zlib); in zlib_check()
2656 max_bits = max_window_bits(zlib.uncompressed_bytes, in zlib_check()
2657 zlib.uncompressed_digits); in zlib_check()
2658 if (zlib.ok_bits < max_bits) in zlib_check()
2659 max_bits = zlib.ok_bits; in zlib_check()
2667 if (zlib.cksum) in zlib_check()
2668 chunk_message(zlib.chunk, "zlib checkum"); in zlib_check()
2674 zlib.z.msg = PNGZ_MSG_CAST("[truncated]"); in zlib_check()
2675 zlib_message(&zlib, 0/*expected*/); in zlib_check()
2682 zlib_end(&zlib); in zlib_check()
2690 while (min_bits < max_bits || max_bits < zlib.ok_bits/*if 16*/) in zlib_check()
2694 if (zlib_reset(&zlib, test_bits)) in zlib_check()
2697 rc = zlib_run(&zlib); in zlib_check()
2712 if (zlib.z.msg == NULL) in zlib_check()
2713 zlib.z.msg = PNGZ_MSG_CAST( in zlib_check()
2715 zlib_message(&zlib, 0/*stream error*/); in zlib_check()
2716 zlib_end(&zlib); in zlib_check()
2730 zlib_end(&zlib); in zlib_check()
2737 zlib_end(&zlib); in zlib_check()
2743 assert(zlib.ok_bits == max_bits); in zlib_check()
2744 zlib_end(&zlib); in zlib_check()
2750 zlib_end(&zlib); in zlib_check()