stdin example
This example shows how to use pycrc.py to calculate the CRC from a file, in this case stdin.
This code was supplied by setop and slightly modified by the author of pycrc.
The main function is:
#include <stdio.h>
#include "crc.h"
#define BLOCK_SIZE 4096
int main(void)
{
char buffer[BLOCK_SIZE];
crc_t crc = crc_init();
while (!feof(stdin)) {
size_t bytes = fread(buffer, BLOCK_SIZE, 1, stdin);
crc = crc_update(crc, buffer, bytes);
}
crc = crc_finalize(crc);
printf("%lx\n", (unsigned long)crc);
return 0;
}
Generate the header file (crc.h) and the CRC implementation
(crc.c) with the usual commands (e.g. for crc-16):
python pycrc.py --model crc-16 --algorithm table-driven --generate h -o crc.h python pycrc.py --model crc-16 --algorithm table-driven --generate c -o crc.c
Compile the *.c files and run the program.
gcc -W -Wall -std=c99 crc.c main.c -o crc ./crc
This will read the data from
stdin and will print the resulting CRC once the end of file is reached.
To insert an end-of-file on the keyboard press CTRL-D.
Alternatively redirect the input from a file or use a pipe to calculate the CRC of the output of a program:
./crc < /path/to/file program | ./crc