diff --git a/Source/bzip2/blocksort.c b/Source/bzip2/blocksort.c index d5fa34c1..c67ca14b 100644 --- a/Source/bzip2/blocksort.c +++ b/Source/bzip2/blocksort.c @@ -1,5 +1,6 @@ -#include "../exehead/config.h" -#if (defined(EXEHEAD) && defined(NSIS_COMPRESS_USE_BZIP2)) || !defined(EXEHEAD) +#include "bzlib.h" + +#if (defined(NSIS_COMPRESS_USE_BZIP2) && defined(NSIS_CONFIG_COMPRESSION_SUPPORT)) || !defined(EXEHEAD) /*-------------------------------------------------------------*/ /*--- Block sorting machinery ---*/ /*--- blocksort.c ---*/ @@ -66,18 +67,13 @@ file implements the algorithm called cache in the paper. --*/ - -#include "bzlib.h" - /*---------------------------------------------*/ /*--- Fallback O(N log(N)^2) sorting ---*/ /*--- algorithm, for repetitive blocks ---*/ /*---------------------------------------------*/ /*---------------------------------------------*/ -static -__inline__ -void fallbackSimpleSort ( UInt32* fmap, +static void fallbackSimpleSort ( UInt32* fmap, UInt32* eclass, Int32 lo, Int32 hi ) @@ -379,9 +375,7 @@ void fallbackSort ( UInt32* fmap, /*---------------------------------------------*/ /*---------------------------------------------*/ -static -__inline__ -Bool mainGtU ( UInt32 i1, +static Bool mainGtU ( UInt32 i1, UInt32 i2, UChar* block, UInt16* quadrant, @@ -616,7 +610,6 @@ void mainSimpleSort ( UInt32* ptr, } static -__inline__ UChar mmed3 ( UChar a, UChar b, UChar c ) { UChar t; diff --git a/Source/bzip2/bzlib.c b/Source/bzip2/bzlib.c index 84fb28fb..b9868d1f 100644 --- a/Source/bzip2/bzlib.c +++ b/Source/bzip2/bzlib.c @@ -1,4 +1,5 @@ -#include "../exehead/config.h" +#include "bzlib.h" + #if (defined(NSIS_COMPRESS_USE_BZIP2) && defined(NSIS_CONFIG_COMPRESSION_SUPPORT)) || !defined(EXEHEAD) /*-------------------------------------------------------------*/ /*--- Library top-level functions. ---*/ @@ -114,8 +115,7 @@ Bool isempty_RL ( EState* s ) } /*---------------------------------------------------*/ -int BZ_API(BZ2_bzCompressInit) - ( bz_stream* strm, +int BZ2_bzCompressInit( bz_stream* strm, int blockSize100k, int verbosity, int workFactor ) @@ -356,7 +356,7 @@ Bool handle_compress ( bz_stream* strm ) /*---------------------------------------------------*/ -int BZ_API(BZ2_bzCompress) ( bz_stream *strm, int action ) +int BZ2_bzCompress( bz_stream *strm, int action ) { Bool progress; EState* s; @@ -417,7 +417,7 @@ int BZ_API(BZ2_bzCompress) ( bz_stream *strm, int action ) /*---------------------------------------------------*/ -int BZ_API(BZ2_bzCompressEnd) ( bz_stream *strm ) +int BZ2_bzCompressEnd( bz_stream *strm ) { EState* s; if (strm == NULL) return BZ_PARAM_ERROR; @@ -576,9 +576,8 @@ static void unRLE_obuf_to_output_FAST ( DState* s ) /*---------------------------------------------------*/ -int BZ_API(BZ2_bzDecompress) ( DState *s ) +int NSISCALL BZ2_bzDecompress( DState *s ) { - while (True) { if (s->state == BZ_X_IDLE) return BZ_SEQUENCE_ERROR; if (s->state == BZ_X_OUTPUT) { diff --git a/Source/bzip2/bzlib.h b/Source/bzip2/bzlib.h index 2cb431c7..a9c3a17c 100644 --- a/Source/bzip2/bzlib.h +++ b/Source/bzip2/bzlib.h @@ -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 + #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 -# include -# 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 } diff --git a/Source/bzip2/compress.c b/Source/bzip2/compress.c index f9828dce..a3b2b816 100644 --- a/Source/bzip2/compress.c +++ b/Source/bzip2/compress.c @@ -1,5 +1,3 @@ -#include "../exehead/config.h" -#if !defined(EXEHEAD) /*-------------------------------------------------------------*/ /*--- Compression machinery (not incl block sorting) ---*/ /*--- compress.c ---*/ @@ -113,9 +111,7 @@ void bsFinishWrite ( EState* s ) /*---------------------------------------------------*/ -static -__inline__ -void bsW ( EState* s, Int32 n, UInt32 v ) +static void bsW ( EState* s, Int32 n, UInt32 v ) { bsNEEDW ( n ); s->bsBuff |= (v << (32 - s->bsLive - n)); @@ -656,5 +652,3 @@ void BZ2_compressBlock ( EState* s, Bool is_last_block ) /*-------------------------------------------------------------*/ /*--- end compress.c ---*/ /*-------------------------------------------------------------*/ - -#endif \ No newline at end of file diff --git a/Source/bzip2/decompress.c b/Source/bzip2/decompress.c index 32fde2c2..5e907d4d 100644 --- a/Source/bzip2/decompress.c +++ b/Source/bzip2/decompress.c @@ -1,5 +1,6 @@ -#include "../exehead/config.h" -#if (defined(NSIS_COMPRESS_USE_BZIP2) && defined(NSIS_CONFIG_COMPRESSION_SUPPORT)) || !defined(EXEHEAD) +#include "bzlib.h" + +#if defined(NSIS_COMPRESS_USE_BZIP2) && defined(NSIS_CONFIG_COMPRESSION_SUPPORT) /*-------------------------------------------------------------*/ /*--- Decompression machinery ---*/ @@ -61,10 +62,6 @@ --*/ -#include "bzlib.h" - - - /*---------------------------------------------------*/ #define RETURN(rrr) \ { retVal = rrr; goto save_state_and_return; }; diff --git a/Source/bzip2/huffman.c b/Source/bzip2/huffman.c index 33fe4535..1f0fde9e 100644 --- a/Source/bzip2/huffman.c +++ b/Source/bzip2/huffman.c @@ -1,4 +1,5 @@ -#include "../exehead/config.h" +#include "bzlib.h" + #if (defined(NSIS_COMPRESS_USE_BZIP2) && defined(NSIS_CONFIG_COMPRESSION_SUPPORT)) || !defined(EXEHEAD) /*-------------------------------------------------------------*/ /*--- Huffman coding low-level stuff ---*/ @@ -59,9 +60,6 @@ For more information on these sources, see the manual. --*/ - -#include "bzlib.h" - #ifndef EXEHEAD /*---------------------------------------------------*/ #define WEIGHTOF(zz0) ((zz0) & 0xffffff00)