2 Copyright (c) 1990-2008 Info-ZIP. All rights reserved.
4 See the accompanying file LICENSE, version 2000-Apr-09 or later
5 (the contents of which are also included in zip.h) for terms of use.
6 If, for some reason, all these files are missing, the Info-ZIP license
7 also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html
9 /* crc32.h -- compute the CRC-32 of a data stream
10 * Copyright (C) 1995 Mark Adler
11 * For conditions of distribution and use, see copyright notice in zlib.h
15 #define __crc32_h /* identifies this source module */
17 /* This header should be read AFTER zip.h resp. unzip.h
18 * (the latter with UNZIP_INTERNAL defined...).
28 #ifdef DYNALLOC_CRCTAB
29 void free_crc_table
OF((void));
32 ZCONST ulg near
*get_crc_table
OF((void));
34 #if (defined(USE_ZLIB) || defined(CRC_TABLE_ONLY))
35 # ifdef IZ_CRC_BE_OPTIMIZ
36 # undef IZ_CRC_BE_OPTIMIZ
38 #else /* !(USE_ZLIB || CRC_TABLE_ONLY) */
39 ulg crc32
OF((ulg crc
, ZCONST uch
*buf
, extent len
));
40 #endif /* ?(USE_ZLIB || CRC_TABLE_ONLY) */
43 # define CRC_32_TAB crc_32_tab
49 #ifdef IZ_CRC_BE_OPTIMIZ
50 # define CRC32UPD(c, crctab) (crctab[((c) >> 24)] ^ ((c) << 8))
51 # define CRC32(c, b, crctab) (crctab[(((int)(c) >> 24) ^ (b))] ^ ((c) << 8))
52 # define REV_BE(w) (((w)>>24)+(((w)>>8)&0xff00)+ \
53 (((w)&0xff00)<<8)+(((w)&0xff)<<24))
55 # define CRC32UPD(c, crctab) (crctab[((int)(c)) & 0xff] ^ ((c) >> 8))
56 # define CRC32(c, b, crctab) (crctab[((int)(c) ^ (b)) & 0xff] ^ ((c) >> 8))
60 #endif /* !__crc32_h */