diff options
| author | Glenn L McGrath <bug1@ihug.co.nz> | 2001-12-05 13:08:03 +0000 |
|---|---|---|
| committer | Glenn L McGrath <bug1@ihug.co.nz> | 2001-12-05 13:08:03 +0000 |
| commit | ef03dbcd4db03fcab7b6f48a7038226d202775ca (patch) | |
| tree | d8631e9e4c384462c0268179b23ed40bbdccd70d /libbb | |
| parent | aad44fb37a3f68dc82e5387c1bf13e3b29daab24 (diff) | |
| download | busybox-w32-ef03dbcd4db03fcab7b6f48a7038226d202775ca.tar.gz busybox-w32-ef03dbcd4db03fcab7b6f48a7038226d202775ca.tar.bz2 busybox-w32-ef03dbcd4db03fcab7b6f48a7038226d202775ca.zip | |
Simplify CRC table generation
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 |
