diff options
author | Rob Landley <rob@landley.net> | 2009-01-05 01:05:43 -0600 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2009-01-05 01:05:43 -0600 |
commit | b15b8fa99ae53396145ea540106b74d37797f774 (patch) | |
tree | 1b16efb7c111d9ef52378b5765cb585d5eb01c79 /lib/lib.c | |
parent | 2f638c397a916399049ac0adaf32a53f635d31bc (diff) | |
download | toybox-b15b8fa99ae53396145ea540106b74d37797f774.tar.gz |
Add -N, -I, -L, and -P options to cksum.
Diffstat (limited to 'lib/lib.c')
-rw-r--r-- | lib/lib.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -721,15 +721,16 @@ void replace_tempfile(int fdin, int fdout, char **tempname) // Create a 256 entry CRC32 lookup table. -void crc_init(unsigned int *crc_table) +void crc_init(unsigned int *crc_table, int little_endian) { unsigned int i; // Init the CRC32 table (big endian) for (i=0; i<256; i++) { - unsigned int j, c = i<<24; + unsigned int j, c = little_endian ? i : i<<24; for (j=8; j; j--) - c=c&0x80000000 ? (c<<1)^0x04c11db7 : (c<<1); + if (little_endian) c = (c&1) ? (c>>1)^0xEDB88320 : c>>1; + else c=c&0x80000000 ? (c<<1)^0x04c11db7 : (c<<1); crc_table[i] = c; } } |