diff options
author | bug1 <bug1@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2001-12-05 13:08:03 +0000 |
---|---|---|
committer | bug1 <bug1@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2001-12-05 13:08:03 +0000 |
commit | 70b221819eebf53be8b81730e68e9f39755454d7 (patch) | |
tree | d8631e9e4c384462c0268179b23ed40bbdccd70d /libbb | |
parent | 2d75f4af1625b8aac57c5adddbc96ca0ba5d8246 (diff) | |
download | busybox-w32-70b221819eebf53be8b81730e68e9f39755454d7.tar.gz busybox-w32-70b221819eebf53be8b81730e68e9f39755454d7.tar.bz2 busybox-w32-70b221819eebf53be8b81730e68e9f39755454d7.zip |
Simplify CRC table generation
git-svn-id: svn://busybox.net/trunk/busybox@3829 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/unzip.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/libbb/unzip.c b/libbb/unzip.c index 69cc8198b..c28ca836c 100644 --- a/libbb/unzip.c +++ b/libbb/unzip.c | |||
@@ -123,22 +123,16 @@ static void abort_gzip(void) | |||
123 | 123 | ||
124 | static void make_crc_table(void) | 124 | static void make_crc_table(void) |
125 | { | 125 | { |
126 | unsigned long table_entry; /* crc shift register */ | 126 | const unsigned long poly = 0xedb88320; /* polynomial exclusive-or pattern */ |
127 | unsigned long poly = 0; /* polynomial exclusive-or pattern */ | 127 | unsigned short i; /* counter for all possible eight bit values */ |
128 | int i; /* counter for all possible eight bit values */ | ||
129 | int k; /* byte being shifted into crc apparatus */ | ||
130 | |||
131 | /* terms of polynomial defining this crc (except x^32): */ | ||
132 | static int p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; | ||
133 | 128 | ||
134 | crc_table = (unsigned long *) malloc(256 * sizeof(unsigned long)); | 129 | crc_table = (unsigned long *) malloc(256 * sizeof(unsigned long)); |
135 | 130 | ||
136 | /* Make exclusive-or pattern from polynomial (0xedb88320) */ | ||
137 | for (i = 0; i < sizeof(p)/sizeof(int); i++) | ||
138 | poly |= 1L << (31 - p[i]); | ||
139 | |||
140 | /* Compute and print table of CRC's, five per line */ | 131 | /* Compute and print table of CRC's, five per line */ |
141 | for (i = 0; i < 256; i++) { | 132 | for (i = 0; i < 256; i++) { |
133 | unsigned long table_entry; /* crc shift register */ | ||
134 | char k; /* byte being shifted into crc apparatus */ | ||
135 | |||
142 | table_entry = i; | 136 | table_entry = i; |
143 | /* The idea to initialize the register with the byte instead of | 137 | /* The idea to initialize the register with the byte instead of |
144 | * zero was stolen from Haruhiko Okumura's ar002 | 138 | * zero was stolen from Haruhiko Okumura's ar002 |