/* -*-c-*-
*
- * $Id: crc32.h,v 1.2 1999/05/05 18:50:31 mdw Exp $
+ * $Id: crc32.h,v 1.4 1999/06/01 09:47:22 mdw Exp $
*
* Calculating cyclic redundancy values (non-cryptographic!)
*
* GNU Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
- * License along with mLib; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * License along with mLib; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
*/
/*----- Revision history --------------------------------------------------*
*
* $Log: crc32.h,v $
+ * Revision 1.4 1999/06/01 09:47:22 mdw
+ * Make the return type of `crc32' a `uint32' now that we have `bits.h'.
+ *
+ * Revision 1.3 1999/05/06 19:51:35 mdw
+ * Reformatted the LGPL notice a little bit.
+ *
* Revision 1.2 1999/05/05 18:50:31 mdw
* Change licensing conditions to LGPL.
*
extern "C" {
#endif
+/*----- Header files ------------------------------------------------------*/
+
+#ifndef BITS_H
+# include "bits.h"
+#endif
+
/*----- External values ---------------------------------------------------*/
-extern unsigned long crc32_table[256];
+extern uint32 crc32_table[256];
/*----- Macros ------------------------------------------------------------*/
/* --- @CRC32@ --- *
*
- * Arguments: @unsigned long result@ = where to put the result
- * @unsigned long crc@ = carryover from previous call, or zero
+ * Arguments: @uint32 result@ = where to put the result
+ * @uint32 crc@ = carryover from previous call, or zero
* @void *buf@ = pointer to buffer to check
* @size_t sz@ = size of the buffer
*
*/
#define CRC32(result, crc, buf, sz) do { \
- const unsigned char *_p = (const unsigned char *)(buf); \
- const unsigned char *_l = _p + (sz); \
- unsigned long _crc = ~(crc) & 0xffffffffu; \
+ const octet *_p = (const octet *)(buf); \
+ const octet *_l = _p + (sz); \
+ uint32 _crc = U32(~(crc)); \
\
while (_p < _l) \
- _crc = (_crc >> 8) ^ crc32_table[(*_p++ ^ _crc) & 0xffu]; \
- (result) = ~_crc & 0xffffffffu; \
+ _crc = (_crc >> 8) ^ crc32_table[U8(*_p++ ^ _crc)]; \
+ (result) = U32(~_crc); \
} while (0)
/*----- Functions provided ------------------------------------------------*/
/* --- @crc32@ --- *
*
- * Arguments: @unsigned long crc@ = carryover from previous call, or zero
+ * Arguments: @uint32 crc@ = carryover from previous call, or zero
* @const void *buf@ = pointer to buffer to check
* @size_t sz@ = size of the buffer
*
* wrapper for the macro version.
*/
-extern unsigned long crc32(unsigned long /*crc*/,
- const void */*buf*/, size_t /*sz*/);
+extern uint32 crc32(uint32 /*crc*/, const void */*buf*/, size_t /*sz*/);
/*----- That's all, folks -------------------------------------------------*/