Lines Matching refs:d

47 uint32_t tinf_get_le_uint32(TINF_DATA *d);
48 uint32_t tinf_get_be_uint32(TINF_DATA *d);
192 unsigned char uzlib_get_byte(TINF_DATA *d) in uzlib_get_byte() argument
196 if (d->source < d->source_limit) { in uzlib_get_byte()
197 return *d->source++; in uzlib_get_byte()
203 if (d->readSource && !d->eof) { in uzlib_get_byte()
204 int val = d->readSource(d); in uzlib_get_byte()
213 d->eof = true; in uzlib_get_byte()
218 uint32_t tinf_get_le_uint32(TINF_DATA *d) in tinf_get_le_uint32() argument
223 val = val >> 8 | ((uint32_t)uzlib_get_byte(d)) << 24; in tinf_get_le_uint32()
228 uint32_t tinf_get_be_uint32(TINF_DATA *d) in tinf_get_be_uint32() argument
233 val = val << 8 | uzlib_get_byte(d); in tinf_get_be_uint32()
239 static int tinf_getbit(TINF_DATA *d) in tinf_getbit() argument
244 if (!d->bitcount--) in tinf_getbit()
247 d->tag = uzlib_get_byte(d); in tinf_getbit()
248 d->bitcount = 7; in tinf_getbit()
252 bit = d->tag & 0x01; in tinf_getbit()
253 d->tag >>= 1; in tinf_getbit()
259 static unsigned int tinf_read_bits(TINF_DATA *d, int num, int base) in tinf_read_bits() argument
270 if (tinf_getbit(d)) val += mask; in tinf_read_bits()
277 static int tinf_decode_symbol(TINF_DATA *d, TINF_TREE *t) in tinf_decode_symbol() argument
284 cur = 2*cur + tinf_getbit(d); in tinf_decode_symbol()
306 static int tinf_decode_trees(TINF_DATA *d, TINF_TREE *lt, TINF_TREE *dt) in tinf_decode_trees() argument
314 hlit = tinf_read_bits(d, 5, 257); in tinf_decode_trees()
317 hdist = tinf_read_bits(d, 5, 1); in tinf_decode_trees()
320 hclen = tinf_read_bits(d, 4, 4); in tinf_decode_trees()
328 unsigned int clen = tinf_read_bits(d, 3, 0); in tinf_decode_trees()
340 int sym = tinf_decode_symbol(d, lt); in tinf_decode_trees()
372 length = tinf_read_bits(d, lbits, lbase); in tinf_decode_trees()
406 static int tinf_inflate_block_data(TINF_DATA *d, TINF_TREE *lt, TINF_TREE *dt) in tinf_inflate_block_data() argument
408 if (d->curlen == 0) { in tinf_inflate_block_data()
411 int sym = tinf_decode_symbol(d, lt); in tinf_inflate_block_data()
414 if (d->eof) { in tinf_inflate_block_data()
420 TINF_PUT(d, sym); in tinf_inflate_block_data()
436 d->curlen = tinf_read_bits(d, length_bits[sym], length_base[sym]); in tinf_inflate_block_data()
438 dist = tinf_decode_symbol(d, dt); in tinf_inflate_block_data()
444 offs = tinf_read_bits(d, dist_bits[dist], dist_base[dist]); in tinf_inflate_block_data()
447 if (d->dict_ring) { in tinf_inflate_block_data()
448 if (offs > d->dict_size) { in tinf_inflate_block_data()
461 d->lzOff = d->dict_idx - offs; in tinf_inflate_block_data()
462 if (d->lzOff < 0) { in tinf_inflate_block_data()
463 d->lzOff += d->dict_size; in tinf_inflate_block_data()
467 if (offs > (unsigned int)(d->dest - d->destStart)) { in tinf_inflate_block_data()
470 d->lzOff = -offs; in tinf_inflate_block_data()
475 if (d->dict_ring) { in tinf_inflate_block_data()
476 TINF_PUT(d, d->dict_ring[d->lzOff]); in tinf_inflate_block_data()
477 if ((unsigned)++d->lzOff == d->dict_size) { in tinf_inflate_block_data()
478 d->lzOff = 0; in tinf_inflate_block_data()
481 d->dest[0] = d->dest[d->lzOff]; in tinf_inflate_block_data()
482 d->dest++; in tinf_inflate_block_data()
484 d->curlen--; in tinf_inflate_block_data()
489 static int tinf_inflate_uncompressed_block(TINF_DATA *d) in tinf_inflate_uncompressed_block() argument
491 if (d->curlen == 0) { in tinf_inflate_uncompressed_block()
495 length = uzlib_get_byte(d); in tinf_inflate_uncompressed_block()
496 length += 256 * uzlib_get_byte(d); in tinf_inflate_uncompressed_block()
498 invlength = uzlib_get_byte(d); in tinf_inflate_uncompressed_block()
499 invlength += 256 * uzlib_get_byte(d); in tinf_inflate_uncompressed_block()
505 d->curlen = length + 1; in tinf_inflate_uncompressed_block()
508 d->bitcount = 0; in tinf_inflate_uncompressed_block()
511 if (--d->curlen == 0) { in tinf_inflate_uncompressed_block()
515 unsigned char c = uzlib_get_byte(d); in tinf_inflate_uncompressed_block()
516 TINF_PUT(d, c); in tinf_inflate_uncompressed_block()
539 void uzlib_uncompress_init(TINF_DATA *d, void *dict, unsigned int dictLen) in uzlib_uncompress_init() argument
541 d->eof = 0; in uzlib_uncompress_init()
542 d->bitcount = 0; in uzlib_uncompress_init()
543 d->bfinal = 0; in uzlib_uncompress_init()
544 d->btype = -1; in uzlib_uncompress_init()
545 d->dict_size = dictLen; in uzlib_uncompress_init()
546 d->dict_ring = dict; in uzlib_uncompress_init()
547 d->dict_idx = 0; in uzlib_uncompress_init()
548 d->curlen = 0; in uzlib_uncompress_init()
552 int uzlib_uncompress(TINF_DATA *d) in uzlib_uncompress() argument
558 if (d->btype == -1) { in uzlib_uncompress()
561 d->bfinal = tinf_getbit(d); in uzlib_uncompress()
563 d->btype = tinf_read_bits(d, 2, 0); in uzlib_uncompress()
566 printf("Started new block: type=%d final=%d\n", d->btype, d->bfinal); in uzlib_uncompress()
569 if (d->btype == 1) { in uzlib_uncompress()
571 tinf_build_fixed_trees(&d->ltree, &d->dtree); in uzlib_uncompress()
572 } else if (d->btype == 2) { in uzlib_uncompress()
574 res = tinf_decode_trees(d, &d->ltree, &d->dtree); in uzlib_uncompress()
582 switch (d->btype) in uzlib_uncompress()
586 res = tinf_inflate_uncompressed_block(d); in uzlib_uncompress()
592 res = tinf_inflate_block_data(d, &d->ltree, &d->dtree); in uzlib_uncompress()
598 if (res == TINF_DONE && !d->bfinal) { in uzlib_uncompress()
608 } while (d->dest < d->dest_limit); in uzlib_uncompress()
615 int uzlib_uncompress_chksum(TINF_DATA *d) in uzlib_uncompress_chksum() argument
618 unsigned char *data = d->dest; in uzlib_uncompress_chksum()
620 res = uzlib_uncompress(d); in uzlib_uncompress_chksum()
624 switch (d->checksum_type) { in uzlib_uncompress_chksum()
627 d->checksum = uzlib_adler32(data, d->dest - data, d->checksum); in uzlib_uncompress_chksum()
631 d->checksum = uzlib_crc32(data, d->dest - data, d->checksum); in uzlib_uncompress_chksum()
638 switch (d->checksum_type) { in uzlib_uncompress_chksum()
641 val = tinf_get_be_uint32(d); in uzlib_uncompress_chksum()
642 if (d->checksum != val) { in uzlib_uncompress_chksum()
648 val = tinf_get_le_uint32(d); in uzlib_uncompress_chksum()
649 if (~d->checksum != val) { in uzlib_uncompress_chksum()
653 val = tinf_get_le_uint32(d); in uzlib_uncompress_chksum()