home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / slfinsta.zip / uac_crc.c < prev    next >
C/C++ Source or Header  |  2000-03-26  |  994b  |  39 lines

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