home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Amiga / Workbench / Archivers / UnAce.lha / Src / Uac_crc.c < prev    next >
C/C++ Source or Header  |  1997-12-03  |  898b  |  37 lines

  1. /* ------------------------------------------------------------------------ */
  2. /*                                                                          */
  3. /*      CRC-calculation routines.                                           */
  4. /*                                                                          */
  5. /* ------------------------------------------------------------------------ */
  6.  
  7. #include "uac_crc.h"
  8.  
  9.  
  10. ULONG crctable[256];
  11. ULONG rd_crc=0;
  12.  
  13.  
  14. void make_crctable(void)   // initializes CRC table
  15. {
  16.    ULONG r,
  17.         i,
  18.         j;
  19.  
  20.    for (i = 0; i <= 255; i++)
  21.    {
  22.       for (r = i, j = 8; j; j--)
  23.          r = (r & 1) ? (r >> 1) ^ CRCPOLY : (r >> 1);
  24.       crctable[i] = r;
  25.    }
  26. }
  27.  
  28. // Updates crc from addr till addr+len-1
  29. //
  30. ULONG getcrc(ULONG crc, UCHAR * addr, INT len)
  31. {
  32.    while (len--)
  33.       crc = crctable[(unsigned char) crc ^ (*addr++)] ^ (crc >> 8);
  34.    return (crc);
  35. }
  36.  
  37.