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 /util-linux | |
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 'util-linux')
-rw-r--r-- | util-linux/fdisk_gpt.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/util-linux/fdisk_gpt.c b/util-linux/fdisk_gpt.c index 98803ec88..4dfb5b227 100644 --- a/util-linux/fdisk_gpt.c +++ b/util-linux/fdisk_gpt.c | |||
@@ -46,8 +46,6 @@ static unsigned int n_parts; | |||
46 | static unsigned int part_array_len; | 46 | static unsigned int part_array_len; |
47 | static unsigned int part_entry_len; | 47 | static unsigned int part_entry_len; |
48 | 48 | ||
49 | static uint32_t *crc32_table; | ||
50 | |||
51 | static inline gpt_partition * | 49 | static inline gpt_partition * |
52 | gpt_part(int i) | 50 | gpt_part(int i) |
53 | { | 51 | { |
@@ -61,12 +59,7 @@ gpt_part(int i) | |||
61 | static uint32_t | 59 | static uint32_t |
62 | gpt_crc32(void *buf, int len) | 60 | gpt_crc32(void *buf, int len) |
63 | { | 61 | { |
64 | uint32_t crc = 0xffffffff; | 62 | return 0xffffffff ^ crc32_block_endian0(0xffffffff, buf, len, global_crc32_table); |
65 | |||
66 | for (; len > 0; len--, buf++) { | ||
67 | crc = crc32_table[(crc ^ *((char *)buf)) & 0xff] ^ (crc >> 8); | ||
68 | } | ||
69 | return crc ^ 0xffffffff; | ||
70 | } | 63 | } |
71 | 64 | ||
72 | static void | 65 | static void |
@@ -160,8 +153,8 @@ check_gpt_label(void) | |||
160 | return 0; | 153 | return 0; |
161 | } | 154 | } |
162 | 155 | ||
163 | if (!crc32_table) { | 156 | if (!global_crc32_table) { |
164 | crc32_table = crc32_filltable(NULL, 0); | 157 | global_crc32_table = crc32_filltable(NULL, 0); |
165 | } | 158 | } |
166 | 159 | ||
167 | crc = SWAP_LE32(gpt_hdr->hdr_crc32); | 160 | crc = SWAP_LE32(gpt_hdr->hdr_crc32); |