From ef03dbcd4db03fcab7b6f48a7038226d202775ca Mon Sep 17 00:00:00 2001 From: Glenn L McGrath Date: Wed, 5 Dec 2001 13:08:03 +0000 Subject: [PATCH] Simplify CRC table generation --- archival/libunarchive/decompress_unzip.c | 16 +++++----------- archival/libunarchive/unzip.c | 16 +++++----------- libbb/unzip.c | 16 +++++----------- 3 files changed, 15 insertions(+), 33 deletions(-) diff --git a/archival/libunarchive/decompress_unzip.c b/archival/libunarchive/decompress_unzip.c index 69cc8198b..c28ca836c 100644 --- a/archival/libunarchive/decompress_unzip.c +++ b/archival/libunarchive/decompress_unzip.c @@ -123,22 +123,16 @@ static void abort_gzip(void) static void make_crc_table(void) { - unsigned long table_entry; /* crc shift register */ - unsigned long poly = 0; /* polynomial exclusive-or pattern */ - int i; /* counter for all possible eight bit values */ - int k; /* byte being shifted into crc apparatus */ - - /* terms of polynomial defining this crc (except x^32): */ - static int p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; + const unsigned long poly = 0xedb88320; /* polynomial exclusive-or pattern */ + unsigned short i; /* counter for all possible eight bit values */ crc_table = (unsigned long *) malloc(256 * sizeof(unsigned long)); - /* Make exclusive-or pattern from polynomial (0xedb88320) */ - for (i = 0; i < sizeof(p)/sizeof(int); i++) - poly |= 1L << (31 - p[i]); - /* Compute and print table of CRC's, five per line */ for (i = 0; i < 256; i++) { + unsigned long table_entry; /* crc shift register */ + char k; /* byte being shifted into crc apparatus */ + table_entry = i; /* The idea to initialize the register with the byte instead of * zero was stolen from Haruhiko Okumura's ar002 diff --git a/archival/libunarchive/unzip.c b/archival/libunarchive/unzip.c index 69cc8198b..c28ca836c 100644 --- a/archival/libunarchive/unzip.c +++ b/archival/libunarchive/unzip.c @@ -123,22 +123,16 @@ static void abort_gzip(void) static void make_crc_table(void) { - unsigned long table_entry; /* crc shift register */ - unsigned long poly = 0; /* polynomial exclusive-or pattern */ - int i; /* counter for all possible eight bit values */ - int k; /* byte being shifted into crc apparatus */ - - /* terms of polynomial defining this crc (except x^32): */ - static int p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; + const unsigned long poly = 0xedb88320; /* polynomial exclusive-or pattern */ + unsigned short i; /* counter for all possible eight bit values */ crc_table = (unsigned long *) malloc(256 * sizeof(unsigned long)); - /* Make exclusive-or pattern from polynomial (0xedb88320) */ - for (i = 0; i < sizeof(p)/sizeof(int); i++) - poly |= 1L << (31 - p[i]); - /* Compute and print table of CRC's, five per line */ for (i = 0; i < 256; i++) { + unsigned long table_entry; /* crc shift register */ + char k; /* byte being shifted into crc apparatus */ + table_entry = i; /* The idea to initialize the register with the byte instead of * zero was stolen from Haruhiko Okumura's ar002 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) static void make_crc_table(void) { - unsigned long table_entry; /* crc shift register */ - unsigned long poly = 0; /* polynomial exclusive-or pattern */ - int i; /* counter for all possible eight bit values */ - int k; /* byte being shifted into crc apparatus */ - - /* terms of polynomial defining this crc (except x^32): */ - static int p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; + const unsigned long poly = 0xedb88320; /* polynomial exclusive-or pattern */ + unsigned short i; /* counter for all possible eight bit values */ crc_table = (unsigned long *) malloc(256 * sizeof(unsigned long)); - /* Make exclusive-or pattern from polynomial (0xedb88320) */ - for (i = 0; i < sizeof(p)/sizeof(int); i++) - poly |= 1L << (31 - p[i]); - /* Compute and print table of CRC's, five per line */ for (i = 0; i < 256; i++) { + unsigned long table_entry; /* crc shift register */ + char k; /* byte being shifted into crc apparatus */ + table_entry = i; /* The idea to initialize the register with the byte instead of * zero was stolen from Haruhiko Okumura's ar002 -- 2.25.1