#include unsigned char crc[8]; main(argc, argv) int argc; char *argv[]; { register int ic; register unsigned char c; register int i; register unsigned char top; long crcsum; FILE *f; for (i=0; i<8; i++) { crc[i] = 0; } if (argc != 2) { fprintf(stdout, "usage: %s filename\n"); exit( 1 ); } printf("Opening \"%s\".\n", argv[1]); f = fopen( argv[1], "r" ); if (f == NULL) { printf("Cannot open!"); exit( 1 ); } printf("Pcrc working...\n"); while( (ic=getc(f)) != EOF ) { c = ic; top = crc[7]; crc[7] = crc[6] ^ top; crc[6] = crc[5] ^ top; crc[5] = crc[4]; crc[4] = crc[3] ^ top; crc[3] = crc[2]; crc[2] = crc[1]; crc[1] = crc[0] ^ top; crc[0] = c ^ top; } printf("crc ="); crcsum = 0; for (i=0; i<8; i++) { printf(" %d", crc[i]); crcsum += crc[i]; } printf(" ; crcsum=%d\n", crcsum); }