From a0b4fe543395b6e42ffd2d760c5d65c57e5d2f55 Mon Sep 17 00:00:00 2001 From: atxr Date: Wed, 21 Feb 2024 17:09:33 +0100 Subject: [PATCH] Get number for dynamic huffman tree --- libmineziper/include/libmineziper_zip.h | 7 +++++-- libmineziper/src/libmineziper_zip.c | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/libmineziper/include/libmineziper_zip.h b/libmineziper/include/libmineziper_zip.h index 82da20e..1347ef4 100644 --- a/libmineziper/include/libmineziper_zip.h +++ b/libmineziper/include/libmineziper_zip.h @@ -66,8 +66,8 @@ typedef struct ISH int raw; struct { - unsigned last_block : 1; - unsigned block_type : 2; + unsigned last_block : 1; + unsigned block_type : 2; }; }; } ISH; @@ -98,6 +98,9 @@ void get_cdh(zip* out); char* get_encoded_block(zip* in, int n); void deflate(zip* in); +int get_number_bit_length_code(DHCH* dhch); +int get_number_dist_code(DHCH* dhch); +int get_number_litteral_code(DHCH* dhch); short decode_length_token(bitstream* bs, int token); int decode_distance_token(bitstream* bs, int token); diff --git a/libmineziper/src/libmineziper_zip.c b/libmineziper/src/libmineziper_zip.c index 2057c0a..ee73e87 100644 --- a/libmineziper/src/libmineziper_zip.c +++ b/libmineziper/src/libmineziper_zip.c @@ -143,6 +143,21 @@ char* decode_type1_block_v2( } } +int get_number_bit_length_code(DHCH* dhch) +{ + return (dhch->bit_length_code & 0b1111) + 4; +} + +int get_number_dist_code(DHCH* dhch) +{ + return (dhch->dist_codes & 0b11111) + 1; +} + +int get_number_litteral_code(DHCH* dhch) +{ + return (dhch->literal_codes & 0b11111) + 257; +} + short decode_length_token(bitstream* bs, int token) { token -= END_OF_BLOCK + 1;