1 /* 2 Copyright (c) 1990-2008 Info-ZIP. All rights reserved. 3 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 8 */ 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 12 */ 13 14 #ifndef __crc32_h 15 #define __crc32_h /* identifies this source module */ 16 17 /* This header should be read AFTER zip.h resp. unzip.h 18 * (the latter with UNZIP_INTERNAL defined...). 19 */ 20 21 #ifndef OF 22 # define OF(a) a 23 #endif 24 #ifndef ZCONST 25 # define ZCONST const 26 #endif 27 28 #ifdef DYNALLOC_CRCTAB 29 void free_crc_table OF((void)); 30 #endif 31 #ifndef USE_ZLIB 32 ZCONST ulg near *get_crc_table OF((void)); 33 #endif 34 #if (defined(USE_ZLIB) || defined(CRC_TABLE_ONLY)) 35 # ifdef IZ_CRC_BE_OPTIMIZ 36 # undef IZ_CRC_BE_OPTIMIZ 37 # endif 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) */ 41 42 #ifndef CRC_32_TAB 43 # define CRC_32_TAB crc_32_tab 44 #endif 45 46 #ifdef CRC32 47 # undef CRC32 48 #endif 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)) 54 #else 55 # define CRC32UPD(c, crctab) (crctab[((int)(c)) & 0xff] ^ ((c) >> 8)) 56 # define CRC32(c, b, crctab) (crctab[((int)(c) ^ (b)) & 0xff] ^ ((c) >> 8)) 57 # define REV_BE(w) w 58 #endif 59 60 #endif /* !__crc32_h */ 61