bzip2 code cleanup

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@1293 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
justin1014 2002-10-03 06:48:06 +00:00
parent ce90415670
commit aee7274442
6 changed files with 204 additions and 295 deletions

View file

@ -66,12 +66,13 @@
#ifndef _BZLIB_H
#define _BZLIB_H
#define BZ_NO_STDIO 1
#ifdef __cplusplus
extern "C" {
#endif
#include "../exehead/config.h"
#include <windows.h>
#define BZ_RUN 0
#define BZ_FLUSH 1
#define BZ_FINISH 2
@ -91,102 +92,6 @@ extern "C" {
#define BZ_OUTBUFF_FULL (-8)
#define BZ_CONFIG_ERROR (-9)
typedef
struct {
char *next_in;
unsigned int avail_in;
char *next_out;
unsigned int avail_out;
void *state;
}
bz_stream;
#ifndef BZ_IMPORT
#define BZ_EXPORT
#endif
#ifdef _WIN32
# include <stdio.h>
# include <windows.h>
# ifdef small
/* windows.h define small to char */
# undef small
# endif
# ifdef BZ_EXPORT
# define BZ_API(func) WINAPI func
# define BZ_EXTERN extern
# else
/* import windows dll dynamically */
# define BZ_API(func) (WINAPI * func)
# define BZ_EXTERN
# endif
#else
# define BZ_API(func) func
# define BZ_EXTERN extern
#endif
/*-- Core (low-level) library functions --*/
BZ_EXTERN int BZ_API(BZ2_bzCompressInit) (
bz_stream* strm,
int blockSize100k,
int verbosity,
int workFactor
);
BZ_EXTERN int BZ_API(BZ2_bzCompress) (
bz_stream* strm,
int action
);
BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) (
bz_stream* strm
);
/*-- General stuff. --*/
#define BZ_VERSION "1.0.1, 23-June-2000"
typedef char Char;
typedef unsigned char Bool;
typedef unsigned char UChar;
typedef int Int32;
typedef unsigned int UInt32;
typedef short Int16;
typedef unsigned short UInt16;
#define True ((Bool)1)
#define False ((Bool)0)
#ifndef __GNUC__
#define __inline__ /* */
#endif
#define AssertD(cond,msg) /* */
#define AssertH(cond,errcode) /* */
#define AssertD(cond,msg) /* */
#define VPrintf0(zf) /* */
#define VPrintf1(zf,za1) /* */
#define VPrintf2(zf,za1,za2) /* */
#define VPrintf3(zf,za1,za2,za3) /* */
#define VPrintf4(zf,za1,za2,za3,za4) /* */
#define VPrintf5(zf,za1,za2,za3,za4,za5) /* */
#ifdef EXEHEAD
#include "../exehead/util.h"
#define BZALLOC(items) my_GlobalAlloc(items)
#else // def EXEHEAD
#define BZALLOC(items) GlobalAlloc(GPTR,items)
#define mini_memcpy memcpy
#endif // def EXEHEAD
#define BZFREE(addr) { if (addr) GlobalFree(addr); }
/*-- Constants for the back end. --*/
#define BZ_MAX_ALPHA_SIZE 258
@ -201,6 +106,55 @@ typedef unsigned short UInt16;
#define BZ_MAX_SELECTORS (2 + (900000 / BZ_G_SIZE))
typedef char Char;
typedef unsigned char Bool;
typedef unsigned char UChar;
typedef int Int32;
typedef unsigned int UInt32;
typedef short Int16;
typedef unsigned short UInt16;
#define True ((Bool)1)
#define False ((Bool)0)
#define AssertD(cond,msg) /* */
#define AssertH(cond,errcode) /* */
#define AssertD(cond,msg) /* */
#define VPrintf0(zf) /* */
#define VPrintf1(zf,za1) /* */
#define VPrintf2(zf,za1,za2) /* */
#define VPrintf3(zf,za1,za2,za3) /* */
#define VPrintf4(zf,za1,za2,za3,za4) /* */
#define VPrintf5(zf,za1,za2,za3,za4,za5) /* */
#ifndef EXEHEAD
#define BZALLOC(items) GlobalAlloc(GPTR,items)
#define BZFREE(addr) { if (addr) GlobalFree(addr); }
#define mini_memcpy memcpy
typedef struct {
char *next_in;
unsigned int avail_in;
char *next_out;
unsigned int avail_out;
void *state;
} bz_stream;
/*-- Core (low-level) library functions --*/
extern int BZ2_bzCompressInit(
bz_stream* strm,
int blockSize100k,
int verbosity,
int workFactor
);
extern int BZ2_bzCompress( bz_stream* strm, int action );
extern int BZ2_bzCompressEnd(bz_stream* strm );
/*-- States and modes for compression. --*/
#define BZ_M_IDLE 1
@ -216,96 +170,84 @@ typedef unsigned short UInt16;
#define BZ_N_SHELL 18
#define BZ_N_OVERSHOOT (BZ_N_RADIX + BZ_N_QSORT + BZ_N_SHELL + 2)
/*-- Structure holding all the compression-side stuff. --*/
typedef
struct {
/* pointer back to the struct bz_stream */
bz_stream *strm;
typedef struct {
/* pointer back to the struct bz_stream */
bz_stream *strm;
/* mode this stream is in, and whether inputting */
/* or outputting data */
Int32 mode;
Int32 state;
/* mode this stream is in, and whether inputting */
/* or outputting data */
Int32 mode;
Int32 state;
/* remembers avail_in when flush/finish requested */
UInt32 avail_in_expect;
/* remembers avail_in when flush/finish requested */
UInt32 avail_in_expect;
/* for doing the block sorting */
UInt32* arr1;
UInt32* arr2;
UInt32* ftab;
Int32 origPtr;
/* for doing the block sorting */
UInt32* arr1;
UInt32* arr2;
UInt32* ftab;
Int32 origPtr;
/* aliases for arr1 and arr2 */
UInt32* ptr;
UChar* block;
UInt16* mtfv;
UChar* zbits;
/* aliases for arr1 and arr2 */
UInt32* ptr;
UChar* block;
UInt16* mtfv;
UChar* zbits;
/* for deciding when to use the fallback sorting algorithm */
Int32 workFactor;
/* for deciding when to use the fallback sorting algorithm */
Int32 workFactor;
/* run-length-encoding of the input */
UInt32 state_in_ch;
Int32 state_in_len;
/* run-length-encoding of the input */
UInt32 state_in_ch;
Int32 state_in_len;
/* input and output limits and current posns */
Int32 nblock;
Int32 nblockMAX;
Int32 numZ;
Int32 state_out_pos;
/* input and output limits and current posns */
Int32 nblock;
Int32 nblockMAX;
Int32 numZ;
Int32 state_out_pos;
/* map of bytes used in block */
Int32 nInUse;
Bool inUse[256];
UChar unseqToSeq[256];
/* map of bytes used in block */
Int32 nInUse;
Bool inUse[256];
UChar unseqToSeq[256];
/* the buffer for bit stream creation */
UInt32 bsBuff;
Int32 bsLive;
/* the buffer for bit stream creation */
UInt32 bsBuff;
Int32 bsLive;
/* misc administratium */
Int32 blockNo;
/* misc administratium */
Int32 blockNo;
/* stuff for coding the MTF values */
Int32 nMTF;
Int32 mtfFreq [BZ_MAX_ALPHA_SIZE];
UChar selector [BZ_MAX_SELECTORS];
UChar selectorMtf[BZ_MAX_SELECTORS];
/* stuff for coding the MTF values */
Int32 nMTF;
Int32 mtfFreq [BZ_MAX_ALPHA_SIZE];
UChar selector [BZ_MAX_SELECTORS];
UChar selectorMtf[BZ_MAX_SELECTORS];
UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Int32 code [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Int32 rfreq [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
/* second dimension: only 3 needed; 4 makes index calculations faster */
UInt32 len_pack[BZ_MAX_ALPHA_SIZE][4];
UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Int32 code [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Int32 rfreq [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
/* second dimension: only 3 needed; 4 makes index calculations faster */
UInt32 len_pack[BZ_MAX_ALPHA_SIZE][4];
}
EState;
} EState;
/*-- externs for compression. --*/
extern void
BZ2_blockSort ( EState* );
extern void
BZ2_compressBlock ( EState*, Bool );
extern void
BZ2_bsInitWrite ( EState* );
extern void
BZ2_hbAssignCodes ( Int32*, UChar*, Int32, Int32, Int32 );
extern void
BZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 );
extern void BZ2_blockSort ( EState* );
extern void BZ2_compressBlock ( EState*, Bool );
extern void BZ2_bsInitWrite ( EState* );
extern void BZ2_hbAssignCodes ( Int32*, UChar*, Int32, Int32, Int32 );
extern void BZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 );
#else//EXEHEAD
#include "../exehead/util.h"
/*-- states for decompression. --*/
@ -343,96 +285,94 @@ BZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 );
/* save area for scalars in the main decompress code */
typedef struct {
Int32 i;
Int32 j;
Int32 t;
Int32 alphaSize;
Int32 nGroups;
Int32 nSelectors;
Int32 EOB;
Int32 groupNo;
Int32 groupPos;
Int32 nextSym;
Int32 nblockMAX;
Int32 nblock;
Int32 es;
Int32 N;
Int32 curr;
Int32 zt;
Int32 zn;
Int32 zvec;
Int32 zj;
Int32 gSel;
Int32 gMinlen;
Int32* gLimit;
Int32* gBase;
Int32* gPerm;
Int32 i;
Int32 j;
Int32 t;
Int32 alphaSize;
Int32 nGroups;
Int32 nSelectors;
Int32 EOB;
Int32 groupNo;
Int32 groupPos;
Int32 nextSym;
Int32 nblockMAX;
Int32 nblock;
Int32 es;
Int32 N;
Int32 curr;
Int32 zt;
Int32 zn;
Int32 zvec;
Int32 zj;
Int32 gSel;
Int32 gMinlen;
Int32* gLimit;
Int32* gBase;
Int32* gPerm;
} DState_save;
/*-- Structure holding all the decompression-side stuff. --*/
typedef
struct {
/* pointer back to the struct bz_stream */
char *next_in;
unsigned int avail_in;
typedef struct {
/* pointer back to the struct bz_stream */
char *next_in;
unsigned int avail_in;
char *next_out;
unsigned int avail_out;
char *next_out;
unsigned int avail_out;
/* state indicator for this stream */
char state;
/* state indicator for this stream */
char state;
UChar state_out_ch;
Int32 state_out_len;
Int32 nblock_used;
Int32 k0;
UInt32 tPos;
UChar state_out_ch;
Int32 state_out_len;
Int32 nblock_used;
Int32 k0;
UInt32 tPos;
/* the buffer for bit stream reading */
UInt32 bsBuff;
Int32 bsLive;
/* the buffer for bit stream reading */
UInt32 bsBuff;
Int32 bsLive;
/* for undoing the Burrows-Wheeler transform */
Int32 origPtr;
Int32 unzftab[256];
Int32 cftab[257];
Int32 cftabCopy[257];
/* for undoing the Burrows-Wheeler transform */
Int32 origPtr;
Int32 unzftab[256];
Int32 cftab[257];
Int32 cftabCopy[257];
#ifndef NSIS_COMPRESS_BZIP2_SMALLMODE
/* for undoing the Burrows-Wheeler transform (FAST) */
UInt32 tt[ NSIS_COMPRESS_BZIP2_LEVEL * 100000 ];
/* for undoing the Burrows-Wheeler transform (FAST) */
UInt32 tt[ NSIS_COMPRESS_BZIP2_LEVEL * 100000 ];
#else
/* for undoing the Burrows-Wheeler transform (SMALL) */
UInt16 ll16 [ NSIS_COMPRESS_BZIP2_LEVEL*100000 ];
UChar ll4 [((1 + NSIS_COMPRESS_BZIP2_LEVEL*100000) >> 1) ];
/* for undoing the Burrows-Wheeler transform (SMALL) */
UInt16 ll16 [ NSIS_COMPRESS_BZIP2_LEVEL*100000 ];
UChar ll4 [((1 + NSIS_COMPRESS_BZIP2_LEVEL*100000) >> 1) ];
#endif
/* map of bytes used in block */
Int32 nInUse;
Bool inUse[256];
Bool inUse16[16];
UChar seqToUnseq[256];
/* map of bytes used in block */
Int32 nInUse;
Bool inUse[256];
Bool inUse16[16];
UChar seqToUnseq[256];
/* for decoding the MTF values */
UChar mtfa [MTFA_SIZE];
Int32 mtfbase[256 / MTFL_SIZE];
UChar selector [BZ_MAX_SELECTORS];
UChar selectorMtf[BZ_MAX_SELECTORS];
UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
/* for decoding the MTF values */
UChar mtfa [MTFA_SIZE];
Int32 mtfbase[256 / MTFL_SIZE];
UChar selector [BZ_MAX_SELECTORS];
UChar selectorMtf[BZ_MAX_SELECTORS];
UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Int32 limit [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Int32 base [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Int32 perm [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Int32 minLens[BZ_N_GROUPS];
/* save area for scalars in the main decompress code */
DState_save save;
}
DState;
Int32 limit [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Int32 base [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Int32 perm [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Int32 minLens[BZ_N_GROUPS];
/* save area for scalars in the main decompress code */
DState_save save;
} DState;
#ifndef NSIS_COMPRESS_BZIP2_SMALLMODE
/*-- Macros for decompression. --*/
#define BZ_GET_FAST(cccc) \
@ -445,6 +385,9 @@ typedef
cccc = (UChar)(c_tPos & 0xff); \
c_tPos >>= 8;
#else//NSIS_COMPRESS_BZIP2_SMALLMODE
#define SET_LL4(i,n) \
{ if (((i) & 0x1) == 0) \
s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0xf0) | (n); else \
@ -466,36 +409,21 @@ typedef
cccc = BZ2_indexIntoF ( s->tPos, s->cftab ); \
s->tPos = GET_LL(s->tPos);
extern Int32 BZ2_indexIntoF( Int32, Int32* );
#endif//smallmode
/*-- externs for decompression. --*/
extern Int32 BZ2_decompress ( DState* );
extern Int32
BZ2_indexIntoF ( Int32, Int32* );
extern Int32
BZ2_decompress ( DState* );
extern void
BZ2_hbCreateDecodeTables ( Int32*, Int32*, Int32*, UChar*,
extern void BZ2_hbCreateDecodeTables ( Int32*, Int32*, Int32*, UChar*,
Int32, Int32, Int32 );
#define BZ2_bzDecompressInit(s) { (s)->state = BZ_X_BLKHDR_1; }
int NSISCALL BZ2_bzDecompress(DState *s);
BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( DState * s );
#endif
/*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/
#ifdef BZ_NO_STDIO
#ifndef NULL
#define NULL 0
#endif
#endif//EXEHEAD
#ifdef __cplusplus
}