diff options
author | Denys Vlasenko <dvlasenk@redhat.com> | 2010-10-27 15:26:45 +0200 |
---|---|---|
committer | Denys Vlasenko <dvlasenk@redhat.com> | 2010-10-27 15:26:45 +0200 |
commit | 9ce642f9746dfc29d119d0680b769677e3ea6da6 (patch) | |
tree | f8d2bcd08c691979058b610b32573a742a3e3024 /archival/gzip.c | |
parent | dd88ba88f5082b1785539b1fb87af7320515b8c9 (diff) | |
download | busybox-w32-9ce642f9746dfc29d119d0680b769677e3ea6da6.tar.gz busybox-w32-9ce642f9746dfc29d119d0680b769677e3ea6da6.tar.bz2 busybox-w32-9ce642f9746dfc29d119d0680b769677e3ea6da6.zip |
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>
Diffstat (limited to 'archival/gzip.c')
-rw-r--r-- | archival/gzip.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/archival/gzip.c b/archival/gzip.c index 32528d96b..4d399063d 100644 --- a/archival/gzip.c +++ b/archival/gzip.c | |||
@@ -340,7 +340,7 @@ struct globals { | |||
340 | ulg bits_sent; /* bit length of the compressed data */ | 340 | ulg bits_sent; /* bit length of the compressed data */ |
341 | #endif | 341 | #endif |
342 | 342 | ||
343 | uint32_t *crc_32_tab; | 343 | /*uint32_t *crc_32_tab;*/ |
344 | uint32_t crc; /* shift register contents */ | 344 | uint32_t crc; /* shift register contents */ |
345 | }; | 345 | }; |
346 | 346 | ||
@@ -393,15 +393,9 @@ static void put_32bit(ulg n) | |||
393 | * pointer, then initialize the crc shift register contents instead. | 393 | * pointer, then initialize the crc shift register contents instead. |
394 | * Return the current crc in either case. | 394 | * Return the current crc in either case. |
395 | */ | 395 | */ |
396 | static uint32_t updcrc(uch * s, unsigned n) | 396 | static void updcrc(uch * s, unsigned n) |
397 | { | 397 | { |
398 | uint32_t c = G1.crc; | 398 | G1.crc = crc32_block_endian0(G1.crc, s, n, global_crc32_table /*G1.crc_32_tab*/); |
399 | while (n) { | ||
400 | c = G1.crc_32_tab[(uch)(c ^ *s++)] ^ (c >> 8); | ||
401 | n--; | ||
402 | } | ||
403 | G1.crc = c; | ||
404 | return c; | ||
405 | } | 399 | } |
406 | 400 | ||
407 | 401 | ||
@@ -2104,8 +2098,8 @@ int gzip_main(int argc UNUSED_PARAM, char **argv) | |||
2104 | ALLOC(uch, G1.window, 2L * WSIZE); | 2098 | ALLOC(uch, G1.window, 2L * WSIZE); |
2105 | ALLOC(ush, G1.prev, 1L << BITS); | 2099 | ALLOC(ush, G1.prev, 1L << BITS); |
2106 | 2100 | ||
2107 | /* Initialise the CRC32 table */ | 2101 | /* Initialize the CRC32 table */ |
2108 | G1.crc_32_tab = crc32_filltable(NULL, 0); | 2102 | global_crc32_table = crc32_filltable(NULL, 0); |
2109 | 2103 | ||
2110 | return bbunpack(argv, pack_gzip, append_ext, "gz"); | 2104 | return bbunpack(argv, pack_gzip, append_ext, "gz"); |
2111 | } | 2105 | } |