libbb: introduce and use common crc32 routine
function old new delta crc32_block_endian1 - 37 +37 crc32_block_endian0 - 34 +34 global_crc32_table - 8 +8 file_read 82 87 +5 gzip_main 211 214 +3 xz_crc32 40 35 -5 crc32_table 8 - -8 calculate_gunzip_crc 54 34 -20 lzo_crc32 54 25 -29 cksum_main 298 211 -87 ------------------------------------------------------------------------------ (add/remove: 3/1 grow/shrink: 2/4 up/down: 87/-149) Total: -62 bytes Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
This commit is contained in:
@ -46,8 +46,6 @@ static unsigned int n_parts;
|
||||
static unsigned int part_array_len;
|
||||
static unsigned int part_entry_len;
|
||||
|
||||
static uint32_t *crc32_table;
|
||||
|
||||
static inline gpt_partition *
|
||||
gpt_part(int i)
|
||||
{
|
||||
@ -61,12 +59,7 @@ gpt_part(int i)
|
||||
static uint32_t
|
||||
gpt_crc32(void *buf, int len)
|
||||
{
|
||||
uint32_t crc = 0xffffffff;
|
||||
|
||||
for (; len > 0; len--, buf++) {
|
||||
crc = crc32_table[(crc ^ *((char *)buf)) & 0xff] ^ (crc >> 8);
|
||||
}
|
||||
return crc ^ 0xffffffff;
|
||||
return 0xffffffff ^ crc32_block_endian0(0xffffffff, buf, len, global_crc32_table);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -160,8 +153,8 @@ check_gpt_label(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!crc32_table) {
|
||||
crc32_table = crc32_filltable(NULL, 0);
|
||||
if (!global_crc32_table) {
|
||||
global_crc32_table = crc32_filltable(NULL, 0);
|
||||
}
|
||||
|
||||
crc = SWAP_LE32(gpt_hdr->hdr_crc32);
|
||||
|
Reference in New Issue
Block a user