/* chiyo0.c - Don Yang (uguu.org) 11/05/02 */ #include int main(int argc, char **argv) { unsigned int table[256], crc, i, j; FILE *infile; int c; if( argc < 2 ) return printf("%s [...]\n", *argv); for(i = 0; i < 256; i++) { crc = i; for(j = 8; j > 0; j--) { if( (crc & 1) != 0 ) crc = (crc >> 1) ^ 0xedb88320; else crc >>= 1; } table[i] = crc; } for(i = 1; i < argc; i++) { if( (infile = fopen(argv[i], "rb")) == NULL ) { printf("Can not open %s\n", argv[i]); continue; } crc = 0xffffffff; while( (c = fgetc(infile)) != EOF ) crc = ((crc >> 8) & 0xffffff) ^ table[(crc ^ c) & 0xff]; (void)fclose(infile); printf("%s: %08x\n", argv[i], crc ^ 0xffffffff); } return 0; }