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;