91 unsigned char *window)
109 else if (index->
have == index->
gzip) {
159 totin = totout =
last = 0;
167 goto deflate_index_build_error;
171 goto deflate_index_build_error;
176 if (totin == 0 && strm.
avail_in >= 3 &&
198 goto deflate_index_build_error;
204 goto deflate_index_build_error;
220 (totout == 0 || totout -
last > span)) {
221 index = addpoint(index, strm.
data_type & 7, totin,
225 goto deflate_index_build_error;
241 deflate_index_build_error:
249 unsigned char *
buf,
int len)
255 unsigned char discard[
WINSIZE];
278 goto deflate_index_extract_ret;
283 goto deflate_index_extract_ret;
317 goto deflate_index_extract_ret;
321 goto deflate_index_extract_ret;
329 goto deflate_index_extract_ret;
332 if (index->
gzip == 0)
355 goto deflate_index_extract_ret;
361 goto deflate_index_extract_ret;
365 goto deflate_index_extract_ret;
371 goto deflate_index_extract_ret;
378 goto deflate_index_extract_ret;
396 deflate_index_extract_ret:
420 if (argc < 2 || argc > 3) {
421 fprintf(stderr,
"usage: zran file.gz [offset]\n");
424 in = fopen(
argv[1],
"rb");
426 fprintf(stderr,
"zran: could not open %s for reading\n",
argv[1]);
435 fprintf(stderr,
"zran: %s is not a valid offset\n",
argv[2]);
446 fprintf(stderr,
"zran: out of memory\n");
449 fprintf(stderr,
"zran: compressed data error in %s\n",
argv[1]);
452 fprintf(stderr,
"zran: read error on %s\n",
argv[1]);
455 fprintf(stderr,
"zran: error %d while building index\n",
len);
459 fprintf(stderr,
"zran: built index with %d access points\n",
len);
466 fprintf(stderr,
"zran: extraction failed: %s error\n",
469 fwrite(
buf, 1,
len, stdout);
470 fprintf(stderr,
"zran: extracted %d bytes at %llu\n",
len,
offset);
int bits(struct state *s, int need)
unsigned in(void *in_desc, z_const unsigned char **buf)
void skip(file *in, unsigned n)
int ZEXPORT inflateSetDictionary(z_streamp strm, const Bytef *dictionary, uInt dictLength)
int ZEXPORT inflatePrime(z_streamp strm, int bits, int value)
int ZEXPORT inflate(z_streamp strm, int flush)
int ZEXPORT inflateReset(z_streamp strm)
int ZEXPORT inflateEnd(z_streamp strm)
int ZEXPORT inflateReset2(z_streamp strm, int windowBits)
unsigned char window[WINSIZE]
#define inflateInit2(strm, windowBits)
void deflate_index_free(struct deflate_index *index)
int deflate_index_extract(FILE *in, struct deflate_index *index, off_t offset, unsigned char *buf, int len)
int deflate_index_build(FILE *in, off_t span, struct deflate_index **built)