Permalink
Commits on Oct 23, 2016
  1. Update versions to 1.5.

    committed Oct 23, 2016
  2. Avoid void * arithmetic.

    While legal in gcc and clang by default, void * arithemtic is not
    valid C99, and is rejected by other compilers. This also adds an
    option in Makefile to warn about this issue in gcc and clang.
    committed Oct 23, 2016
Commits on Jul 31, 2016
Commits on Jul 30, 2016
  1. Factor out some common code.

    committed Jul 30, 2016
  2. Use void * type to pass crc data.

    It is more convenient for applications to pass a pointer to any
    data type into a void * type for the CRC calculations. The casting
    for byte or word access is then done within the CRC functions.
    committed Jul 30, 2016
Commits on Jul 29, 2016
  1. Add a Ruby script to get the latest CRC definitions.

    getcrcs will extract all of the CRC definitions from Greg Cook's
    CRC catalog (or catalogue as he calls it), which is at
    http://reveng.sourceforge.net/crc-catalogue/all.htm . The result
    of this script is the file allcrcs.txt in this distribution, as
    of the last time it was run.
    committed Jul 29, 2016
  2. Fix a bug in word-wise table generation.

    If the CRC was less than eight bits, forward, and had a non-zero
    xorout, then the previous code would apply the xorout to the wrong
    bits when generating the word-wise table. This commit fixes that.
    committed Jul 29, 2016
Commits on Jul 26, 2016
  1. Faster reverse() in model.c.

    This also precipitated a change to limit word_t to 8 bytes.
    committed Jul 26, 2016
  2. Fix bug in crcgen for 64-bit reverse.

    Shifting up by the number of bits in an integer type gives an
    undefined result. Often the result is the same as shifting up by
    zero bits.
    committed Jul 26, 2016
Commits on Jul 25, 2016
  1. Improve bit reverse function.

    committed Jul 25, 2016
  2. Avoid use of uintmax_t outside loop for little endian.

    This makes the word-wise tables smaller for little-endian, and
    permits the by-word loop to use the smaller CRC integer type.
    This was considered for big-endian as well, but the additional
    shift operation in each by-word loop slowed down the calculation,
    even though the smaller tables would take less cache space.
    committed Jul 25, 2016
Commits on Jul 24, 2016
Commits on Jul 23, 2016
  1. Build xorout into the tables.

    committed Jul 23, 2016
  2. Use word table for byte table when possible.

    The byte table is the same as the first word table for little-
    endian and reflected true, or for big-endian, reflected false,
    and the CRC size equal to the largest integer size.
    committed Jul 23, 2016
  3. Test CRC header files as well.

    committed Jul 23, 2016
  4. Add random data testing from middle to middle of words.

    Generate random bytes and compute the CRC from one byte into a
    word boundary to one byte before a word boundary, with at least
    two aligned words in-between, in order to exercise all parts of
    the by-word calculation.
    committed Jul 23, 2016
Commits on Jul 22, 2016
Commits on Jul 18, 2016
  1. Improve the code generated by crcgen.

    Removes shifts by zero, unnecessary parentheses, and add in a mask
    needed in one case to assure that indexing is never out of range.
    committed Jul 18, 2016
Commits on Jul 17, 2016
  1. Add crcgen, which generates C code for each CRC definition.

    crcgen generates a separate .h and .c file for each CRC
    definition read from stdin. The source files are put in the src/
    subdirectory. Test code is also generated and run by make test.
    committed Jul 17, 2016
  2. Split out generic CRC code into separate source files.

    Update crcany version number to 1.2.
    committed Jul 17, 2016