Annotation of hatari/src/utils.c, revision 1.1.1.2

1.1       root        1: /*
                      2:  * Hatari - utils.c
                      3:  *
                      4:  * This file is distributed under the GNU Public License, version 2 or at
                      5:  * your option any later version. Read the file gpl.txt for details.
                      6:  *
                      7:  * Utils functions :
                      8:  *     - CRC32
                      9:  *
                     10:  * This file contains various utility functions used by different parts of Hatari.
                     11:  */
1.1.1.2 ! root       12: const char Utils_rcsid[] = "Hatari $Id: utils.c,v 1.2 2008-10-05 20:41:50 npomarede Exp $";
1.1       root       13: 
                     14: 
                     15: /* 2008/07/08  [NP]    File creation, CRC32 functions.                         */
                     16: 
                     17: 
                     18: #include "utils.h"
                     19: 
                     20: 
                     21: 
                     22: 
                     23: /************************************************************************/
                     24: /* Functions used to compute the CRC32 of a stream of bytes.           */
                     25: /* These functions require a pointer to an unsigned int (Uint32) to    */
                     26: /* store the resulting CRC.                                            */
                     27: /*     crc32_reset : call this once to reset the CRC, before adding    */
                     28: /*             some bytes.                                             */
                     29: /*     crc32_add_byte : update the current CRC with a new byte.        */
                     30: /************************************************************************/
                     31: 
                     32: /*--------------------------------------------------------------*/
                     33: /* Reset the crc32 value. This should be done before calling   */
                     34: /* crc32_add_byte().                                           */
                     35: /*--------------------------------------------------------------*/
                     36: 
                     37: void   crc32_reset ( Uint32 *crc )
                     38: {
                     39:        *crc = 0xffffffff;
                     40: }
                     41: 
                     42: 
                     43: /*--------------------------------------------------------------*/
                     44: /* Update the current value of crc with a new byte.            */
                     45: /* Call crc32_reset() first to init the crc value.             */
                     46: /*--------------------------------------------------------------*/
                     47: 
                     48: void   crc32_add_byte ( Uint32 *crc , Uint8 c )
                     49: {
                     50:        int     bit;
                     51:     
                     52:        for ( bit=0 ; bit<8; bit++ )
                     53:        {
                     54:                if ( ( c & 0x80 ) ^ ( *crc & 0x80000000 ) )
                     55:                        *crc = ( *crc << 1 ) ^ CRC32_POLY;
                     56: 
                     57:                else
                     58:                        *crc = *crc << 1;
                     59: 
                     60:             c <<= 1;
                     61:         }
                     62: }
                     63: 
                     64: 
                     65: /************************************************************************/
                     66: 
                     67: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.