178556Sobrien
278556Sobrien/*-------------------------------------------------------------*/
378556Sobrien/*--- Private header file for the library.                  ---*/
478556Sobrien/*---                                       bzlib_private.h ---*/
578556Sobrien/*-------------------------------------------------------------*/
678556Sobrien
7167974Sdelphij/* ------------------------------------------------------------------
8167974Sdelphij   This file is part of bzip2/libbzip2, a program and library for
9167974Sdelphij   lossless, block-sorting data compression.
1078556Sobrien
11215041Sobrien   bzip2/libbzip2 version 1.0.6 of 6 September 2010
12215041Sobrien   Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
1378556Sobrien
14167974Sdelphij   Please read the WARNING, DISCLAIMER and PATENTS sections in the
15167974Sdelphij   README file.
1678556Sobrien
17167974Sdelphij   This program is released under the terms of the license contained
18167974Sdelphij   in the file LICENSE.
19167974Sdelphij   ------------------------------------------------------------------ */
2078556Sobrien
2178556Sobrien
2278556Sobrien#ifndef _BZLIB_PRIVATE_H
2378556Sobrien#define _BZLIB_PRIVATE_H
2478556Sobrien
2578556Sobrien#include <stdlib.h>
2678556Sobrien
2778556Sobrien#ifndef BZ_NO_STDIO
2878556Sobrien#include <stdio.h>
2978556Sobrien#include <ctype.h>
3078556Sobrien#include <string.h>
3178556Sobrien#endif
3278556Sobrien
3378556Sobrien#include "bzlib.h"
3478556Sobrien
3578556Sobrien
3678556Sobrien
3778556Sobrien/*-- General stuff. --*/
3878556Sobrien
39215041Sobrien#define BZ_VERSION  "1.0.6, 6-Sept-2010"
4078556Sobrien
4178556Sobrientypedef char            Char;
4278556Sobrientypedef unsigned char   Bool;
4378556Sobrientypedef unsigned char   UChar;
4478556Sobrientypedef int             Int32;
4578556Sobrientypedef unsigned int    UInt32;
4678556Sobrientypedef short           Int16;
4778556Sobrientypedef unsigned short  UInt16;
4878556Sobrien
4978556Sobrien#define True  ((Bool)1)
5078556Sobrien#define False ((Bool)0)
5178556Sobrien
5278556Sobrien#ifndef __GNUC__
5378556Sobrien#define __inline__  /* */
5478556Sobrien#endif
5578556Sobrien
5678556Sobrien#ifndef BZ_NO_STDIO
57167974Sdelphij
5878556Sobrienextern void BZ2_bz__AssertH__fail ( int errcode );
5978556Sobrien#define AssertH(cond,errcode) \
6078556Sobrien   { if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); }
61167974Sdelphij
6278556Sobrien#if BZ_DEBUG
6378556Sobrien#define AssertD(cond,msg) \
6478556Sobrien   { if (!(cond)) {       \
6578556Sobrien      fprintf ( stderr,   \
6678556Sobrien        "\n\nlibbzip2(debug build): internal error\n\t%s\n", msg );\
6778556Sobrien      exit(1); \
6878556Sobrien   }}
6978556Sobrien#else
7078556Sobrien#define AssertD(cond,msg) /* */
7178556Sobrien#endif
72167974Sdelphij
7378556Sobrien#define VPrintf0(zf) \
7478556Sobrien   fprintf(stderr,zf)
7578556Sobrien#define VPrintf1(zf,za1) \
7678556Sobrien   fprintf(stderr,zf,za1)
7778556Sobrien#define VPrintf2(zf,za1,za2) \
7878556Sobrien   fprintf(stderr,zf,za1,za2)
7978556Sobrien#define VPrintf3(zf,za1,za2,za3) \
8078556Sobrien   fprintf(stderr,zf,za1,za2,za3)
8178556Sobrien#define VPrintf4(zf,za1,za2,za3,za4) \
8278556Sobrien   fprintf(stderr,zf,za1,za2,za3,za4)
8378556Sobrien#define VPrintf5(zf,za1,za2,za3,za4,za5) \
8478556Sobrien   fprintf(stderr,zf,za1,za2,za3,za4,za5)
85167974Sdelphij
8678556Sobrien#else
87167974Sdelphij
8878556Sobrienextern void bz_internal_error ( int errcode );
8978556Sobrien#define AssertH(cond,errcode) \
9078556Sobrien   { if (!(cond)) bz_internal_error ( errcode ); }
91167974Sdelphij#define AssertD(cond,msg)                do { } while (0)
92167974Sdelphij#define VPrintf0(zf)                     do { } while (0)
93167974Sdelphij#define VPrintf1(zf,za1)                 do { } while (0)
94167974Sdelphij#define VPrintf2(zf,za1,za2)             do { } while (0)
95167974Sdelphij#define VPrintf3(zf,za1,za2,za3)         do { } while (0)
96167974Sdelphij#define VPrintf4(zf,za1,za2,za3,za4)     do { } while (0)
97167974Sdelphij#define VPrintf5(zf,za1,za2,za3,za4,za5) do { } while (0)
98167974Sdelphij
9978556Sobrien#endif
10078556Sobrien
10178556Sobrien
10278556Sobrien#define BZALLOC(nnn) (strm->bzalloc)(strm->opaque,(nnn),1)
10378556Sobrien#define BZFREE(ppp)  (strm->bzfree)(strm->opaque,(ppp))
10478556Sobrien
10578556Sobrien
10690067Ssobomax/*-- Header bytes. --*/
10790067Ssobomax
10890067Ssobomax#define BZ_HDR_B 0x42   /* 'B' */
10990067Ssobomax#define BZ_HDR_Z 0x5a   /* 'Z' */
11090067Ssobomax#define BZ_HDR_h 0x68   /* 'h' */
11190067Ssobomax#define BZ_HDR_0 0x30   /* '0' */
11290067Ssobomax
11378556Sobrien/*-- Constants for the back end. --*/
11478556Sobrien
11578556Sobrien#define BZ_MAX_ALPHA_SIZE 258
11678556Sobrien#define BZ_MAX_CODE_LEN    23
11778556Sobrien
11878556Sobrien#define BZ_RUNA 0
11978556Sobrien#define BZ_RUNB 1
12078556Sobrien
12178556Sobrien#define BZ_N_GROUPS 6
12278556Sobrien#define BZ_G_SIZE   50
12378556Sobrien#define BZ_N_ITERS  4
12478556Sobrien
12578556Sobrien#define BZ_MAX_SELECTORS (2 + (900000 / BZ_G_SIZE))
12678556Sobrien
12778556Sobrien
12878556Sobrien
12978556Sobrien/*-- Stuff for randomising repetitive blocks. --*/
13078556Sobrien
13178556Sobrienextern Int32 BZ2_rNums[512];
13278556Sobrien
13378556Sobrien#define BZ_RAND_DECLS                          \
13478556Sobrien   Int32 rNToGo;                               \
13578556Sobrien   Int32 rTPos                                 \
13678556Sobrien
13778556Sobrien#define BZ_RAND_INIT_MASK                      \
13878556Sobrien   s->rNToGo = 0;                              \
13978556Sobrien   s->rTPos  = 0                               \
14078556Sobrien
14178556Sobrien#define BZ_RAND_MASK ((s->rNToGo == 1) ? 1 : 0)
14278556Sobrien
14378556Sobrien#define BZ_RAND_UPD_MASK                       \
14478556Sobrien   if (s->rNToGo == 0) {                       \
14578556Sobrien      s->rNToGo = BZ2_rNums[s->rTPos];         \
14678556Sobrien      s->rTPos++;                              \
14778556Sobrien      if (s->rTPos == 512) s->rTPos = 0;       \
14878556Sobrien   }                                           \
14978556Sobrien   s->rNToGo--;
15078556Sobrien
15178556Sobrien
15278556Sobrien
15378556Sobrien/*-- Stuff for doing CRCs. --*/
15478556Sobrien
15578556Sobrienextern UInt32 BZ2_crc32Table[256];
15678556Sobrien
15778556Sobrien#define BZ_INITIALISE_CRC(crcVar)              \
15878556Sobrien{                                              \
15978556Sobrien   crcVar = 0xffffffffL;                       \
16078556Sobrien}
16178556Sobrien
16278556Sobrien#define BZ_FINALISE_CRC(crcVar)                \
16378556Sobrien{                                              \
16478556Sobrien   crcVar = ~(crcVar);                         \
16578556Sobrien}
16678556Sobrien
16778556Sobrien#define BZ_UPDATE_CRC(crcVar,cha)              \
16878556Sobrien{                                              \
16978556Sobrien   crcVar = (crcVar << 8) ^                    \
17078556Sobrien            BZ2_crc32Table[(crcVar >> 24) ^    \
17178556Sobrien                           ((UChar)cha)];      \
17278556Sobrien}
17378556Sobrien
17478556Sobrien
17578556Sobrien
17678556Sobrien/*-- States and modes for compression. --*/
17778556Sobrien
17878556Sobrien#define BZ_M_IDLE      1
17978556Sobrien#define BZ_M_RUNNING   2
18078556Sobrien#define BZ_M_FLUSHING  3
18178556Sobrien#define BZ_M_FINISHING 4
18278556Sobrien
18378556Sobrien#define BZ_S_OUTPUT    1
18478556Sobrien#define BZ_S_INPUT     2
18578556Sobrien
18678556Sobrien#define BZ_N_RADIX 2
18778556Sobrien#define BZ_N_QSORT 12
18878556Sobrien#define BZ_N_SHELL 18
18978556Sobrien#define BZ_N_OVERSHOOT (BZ_N_RADIX + BZ_N_QSORT + BZ_N_SHELL + 2)
19078556Sobrien
19178556Sobrien
19278556Sobrien
19378556Sobrien
19478556Sobrien/*-- Structure holding all the compression-side stuff. --*/
19578556Sobrien
19678556Sobrientypedef
19778556Sobrien   struct {
19878556Sobrien      /* pointer back to the struct bz_stream */
19978556Sobrien      bz_stream* strm;
20078556Sobrien
20178556Sobrien      /* mode this stream is in, and whether inputting */
20278556Sobrien      /* or outputting data */
20378556Sobrien      Int32    mode;
20478556Sobrien      Int32    state;
20578556Sobrien
20678556Sobrien      /* remembers avail_in when flush/finish requested */
20778556Sobrien      UInt32   avail_in_expect;
20878556Sobrien
20978556Sobrien      /* for doing the block sorting */
21078556Sobrien      UInt32*  arr1;
21178556Sobrien      UInt32*  arr2;
21278556Sobrien      UInt32*  ftab;
21378556Sobrien      Int32    origPtr;
21478556Sobrien
21578556Sobrien      /* aliases for arr1 and arr2 */
21678556Sobrien      UInt32*  ptr;
21778556Sobrien      UChar*   block;
21878556Sobrien      UInt16*  mtfv;
21978556Sobrien      UChar*   zbits;
22078556Sobrien
22178556Sobrien      /* for deciding when to use the fallback sorting algorithm */
22278556Sobrien      Int32    workFactor;
22378556Sobrien
22478556Sobrien      /* run-length-encoding of the input */
22578556Sobrien      UInt32   state_in_ch;
22678556Sobrien      Int32    state_in_len;
22778556Sobrien      BZ_RAND_DECLS;
22878556Sobrien
22978556Sobrien      /* input and output limits and current posns */
23078556Sobrien      Int32    nblock;
23178556Sobrien      Int32    nblockMAX;
23278556Sobrien      Int32    numZ;
23378556Sobrien      Int32    state_out_pos;
23478556Sobrien
23578556Sobrien      /* map of bytes used in block */
23678556Sobrien      Int32    nInUse;
23778556Sobrien      Bool     inUse[256];
23878556Sobrien      UChar    unseqToSeq[256];
23978556Sobrien
24078556Sobrien      /* the buffer for bit stream creation */
24178556Sobrien      UInt32   bsBuff;
24278556Sobrien      Int32    bsLive;
24378556Sobrien
24478556Sobrien      /* block and combined CRCs */
24578556Sobrien      UInt32   blockCRC;
24678556Sobrien      UInt32   combinedCRC;
24778556Sobrien
24878556Sobrien      /* misc administratium */
24978556Sobrien      Int32    verbosity;
25078556Sobrien      Int32    blockNo;
25178556Sobrien      Int32    blockSize100k;
25278556Sobrien
25378556Sobrien      /* stuff for coding the MTF values */
25478556Sobrien      Int32    nMTF;
25578556Sobrien      Int32    mtfFreq    [BZ_MAX_ALPHA_SIZE];
25678556Sobrien      UChar    selector   [BZ_MAX_SELECTORS];
25778556Sobrien      UChar    selectorMtf[BZ_MAX_SELECTORS];
25878556Sobrien
25978556Sobrien      UChar    len     [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
26078556Sobrien      Int32    code    [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
26178556Sobrien      Int32    rfreq   [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
26278556Sobrien      /* second dimension: only 3 needed; 4 makes index calculations faster */
26378556Sobrien      UInt32   len_pack[BZ_MAX_ALPHA_SIZE][4];
26478556Sobrien
26578556Sobrien   }
26678556Sobrien   EState;
26778556Sobrien
26878556Sobrien
26978556Sobrien
27078556Sobrien/*-- externs for compression. --*/
27178556Sobrien
27278556Sobrienextern void
27378556SobrienBZ2_blockSort ( EState* );
27478556Sobrien
27578556Sobrienextern void
27678556SobrienBZ2_compressBlock ( EState*, Bool );
27778556Sobrien
27878556Sobrienextern void
27978556SobrienBZ2_bsInitWrite ( EState* );
28078556Sobrien
28178556Sobrienextern void
28278556SobrienBZ2_hbAssignCodes ( Int32*, UChar*, Int32, Int32, Int32 );
28378556Sobrien
28478556Sobrienextern void
28578556SobrienBZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 );
28678556Sobrien
28778556Sobrien
28878556Sobrien
28978556Sobrien/*-- states for decompression. --*/
29078556Sobrien
29178556Sobrien#define BZ_X_IDLE        1
29278556Sobrien#define BZ_X_OUTPUT      2
29378556Sobrien
29478556Sobrien#define BZ_X_MAGIC_1     10
29578556Sobrien#define BZ_X_MAGIC_2     11
29678556Sobrien#define BZ_X_MAGIC_3     12
29778556Sobrien#define BZ_X_MAGIC_4     13
29878556Sobrien#define BZ_X_BLKHDR_1    14
29978556Sobrien#define BZ_X_BLKHDR_2    15
30078556Sobrien#define BZ_X_BLKHDR_3    16
30178556Sobrien#define BZ_X_BLKHDR_4    17
30278556Sobrien#define BZ_X_BLKHDR_5    18
30378556Sobrien#define BZ_X_BLKHDR_6    19
30478556Sobrien#define BZ_X_BCRC_1      20
30578556Sobrien#define BZ_X_BCRC_2      21
30678556Sobrien#define BZ_X_BCRC_3      22
30778556Sobrien#define BZ_X_BCRC_4      23
30878556Sobrien#define BZ_X_RANDBIT     24
30978556Sobrien#define BZ_X_ORIGPTR_1   25
31078556Sobrien#define BZ_X_ORIGPTR_2   26
31178556Sobrien#define BZ_X_ORIGPTR_3   27
31278556Sobrien#define BZ_X_MAPPING_1   28
31378556Sobrien#define BZ_X_MAPPING_2   29
31478556Sobrien#define BZ_X_SELECTOR_1  30
31578556Sobrien#define BZ_X_SELECTOR_2  31
31678556Sobrien#define BZ_X_SELECTOR_3  32
31778556Sobrien#define BZ_X_CODING_1    33
31878556Sobrien#define BZ_X_CODING_2    34
31978556Sobrien#define BZ_X_CODING_3    35
32078556Sobrien#define BZ_X_MTF_1       36
32178556Sobrien#define BZ_X_MTF_2       37
32278556Sobrien#define BZ_X_MTF_3       38
32378556Sobrien#define BZ_X_MTF_4       39
32478556Sobrien#define BZ_X_MTF_5       40
32578556Sobrien#define BZ_X_MTF_6       41
32678556Sobrien#define BZ_X_ENDHDR_2    42
32778556Sobrien#define BZ_X_ENDHDR_3    43
32878556Sobrien#define BZ_X_ENDHDR_4    44
32978556Sobrien#define BZ_X_ENDHDR_5    45
33078556Sobrien#define BZ_X_ENDHDR_6    46
33178556Sobrien#define BZ_X_CCRC_1      47
33278556Sobrien#define BZ_X_CCRC_2      48
33378556Sobrien#define BZ_X_CCRC_3      49
33478556Sobrien#define BZ_X_CCRC_4      50
33578556Sobrien
33678556Sobrien
33778556Sobrien
33878556Sobrien/*-- Constants for the fast MTF decoder. --*/
33978556Sobrien
34078556Sobrien#define MTFA_SIZE 4096
34178556Sobrien#define MTFL_SIZE 16
34278556Sobrien
34378556Sobrien
34478556Sobrien
34578556Sobrien/*-- Structure holding all the decompression-side stuff. --*/
34678556Sobrien
34778556Sobrientypedef
34878556Sobrien   struct {
34978556Sobrien      /* pointer back to the struct bz_stream */
35078556Sobrien      bz_stream* strm;
35178556Sobrien
35278556Sobrien      /* state indicator for this stream */
35378556Sobrien      Int32    state;
35478556Sobrien
35578556Sobrien      /* for doing the final run-length decoding */
35678556Sobrien      UChar    state_out_ch;
35778556Sobrien      Int32    state_out_len;
35878556Sobrien      Bool     blockRandomised;
35978556Sobrien      BZ_RAND_DECLS;
36078556Sobrien
36178556Sobrien      /* the buffer for bit stream reading */
36278556Sobrien      UInt32   bsBuff;
36378556Sobrien      Int32    bsLive;
36478556Sobrien
36578556Sobrien      /* misc administratium */
36678556Sobrien      Int32    blockSize100k;
36778556Sobrien      Bool     smallDecompress;
36878556Sobrien      Int32    currBlockNo;
36978556Sobrien      Int32    verbosity;
37078556Sobrien
37178556Sobrien      /* for undoing the Burrows-Wheeler transform */
37278556Sobrien      Int32    origPtr;
37378556Sobrien      UInt32   tPos;
37478556Sobrien      Int32    k0;
37578556Sobrien      Int32    unzftab[256];
37678556Sobrien      Int32    nblock_used;
37778556Sobrien      Int32    cftab[257];
37878556Sobrien      Int32    cftabCopy[257];
37978556Sobrien
38078556Sobrien      /* for undoing the Burrows-Wheeler transform (FAST) */
38178556Sobrien      UInt32   *tt;
38278556Sobrien
38378556Sobrien      /* for undoing the Burrows-Wheeler transform (SMALL) */
38478556Sobrien      UInt16   *ll16;
38578556Sobrien      UChar    *ll4;
38678556Sobrien
38778556Sobrien      /* stored and calculated CRCs */
38878556Sobrien      UInt32   storedBlockCRC;
38978556Sobrien      UInt32   storedCombinedCRC;
39078556Sobrien      UInt32   calculatedBlockCRC;
39178556Sobrien      UInt32   calculatedCombinedCRC;
39278556Sobrien
39378556Sobrien      /* map of bytes used in block */
39478556Sobrien      Int32    nInUse;
39578556Sobrien      Bool     inUse[256];
39678556Sobrien      Bool     inUse16[16];
39778556Sobrien      UChar    seqToUnseq[256];
39878556Sobrien
39978556Sobrien      /* for decoding the MTF values */
40078556Sobrien      UChar    mtfa   [MTFA_SIZE];
40178556Sobrien      Int32    mtfbase[256 / MTFL_SIZE];
40278556Sobrien      UChar    selector   [BZ_MAX_SELECTORS];
40378556Sobrien      UChar    selectorMtf[BZ_MAX_SELECTORS];
40478556Sobrien      UChar    len  [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
40578556Sobrien
40678556Sobrien      Int32    limit  [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
40778556Sobrien      Int32    base   [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
40878556Sobrien      Int32    perm   [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
40978556Sobrien      Int32    minLens[BZ_N_GROUPS];
41078556Sobrien
41178556Sobrien      /* save area for scalars in the main decompress code */
41278556Sobrien      Int32    save_i;
41378556Sobrien      Int32    save_j;
41478556Sobrien      Int32    save_t;
41578556Sobrien      Int32    save_alphaSize;
41678556Sobrien      Int32    save_nGroups;
41778556Sobrien      Int32    save_nSelectors;
41878556Sobrien      Int32    save_EOB;
41978556Sobrien      Int32    save_groupNo;
42078556Sobrien      Int32    save_groupPos;
42178556Sobrien      Int32    save_nextSym;
42278556Sobrien      Int32    save_nblockMAX;
42378556Sobrien      Int32    save_nblock;
42478556Sobrien      Int32    save_es;
42578556Sobrien      Int32    save_N;
42678556Sobrien      Int32    save_curr;
42778556Sobrien      Int32    save_zt;
42878556Sobrien      Int32    save_zn;
42978556Sobrien      Int32    save_zvec;
43078556Sobrien      Int32    save_zj;
43178556Sobrien      Int32    save_gSel;
43278556Sobrien      Int32    save_gMinlen;
43378556Sobrien      Int32*   save_gLimit;
43478556Sobrien      Int32*   save_gBase;
43578556Sobrien      Int32*   save_gPerm;
43678556Sobrien
43778556Sobrien   }
43878556Sobrien   DState;
43978556Sobrien
44078556Sobrien
44178556Sobrien
44278556Sobrien/*-- Macros for decompression. --*/
44378556Sobrien
44478556Sobrien#define BZ_GET_FAST(cccc)                     \
445177420Sdelphij    /* c_tPos is unsigned, hence test < 0 is pointless. */ \
446177420Sdelphij    if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \
44778556Sobrien    s->tPos = s->tt[s->tPos];                 \
44878556Sobrien    cccc = (UChar)(s->tPos & 0xff);           \
44978556Sobrien    s->tPos >>= 8;
45078556Sobrien
45178556Sobrien#define BZ_GET_FAST_C(cccc)                   \
452177420Sdelphij    /* c_tPos is unsigned, hence test < 0 is pointless. */ \
453177420Sdelphij    if (c_tPos >= (UInt32)100000 * (UInt32)ro_blockSize100k) return True; \
45478556Sobrien    c_tPos = c_tt[c_tPos];                    \
45578556Sobrien    cccc = (UChar)(c_tPos & 0xff);            \
45678556Sobrien    c_tPos >>= 8;
45778556Sobrien
45878556Sobrien#define SET_LL4(i,n)                                          \
45978556Sobrien   { if (((i) & 0x1) == 0)                                    \
46078556Sobrien        s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0xf0) | (n); else    \
46178556Sobrien        s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0x0f) | ((n) << 4);  \
46278556Sobrien   }
46378556Sobrien
46478556Sobrien#define GET_LL4(i)                             \
46578556Sobrien   ((((UInt32)(s->ll4[(i) >> 1])) >> (((i) << 2) & 0x4)) & 0xF)
46678556Sobrien
46778556Sobrien#define SET_LL(i,n)                          \
46878556Sobrien   { s->ll16[i] = (UInt16)(n & 0x0000ffff);  \
46978556Sobrien     SET_LL4(i, n >> 16);                    \
47078556Sobrien   }
47178556Sobrien
47278556Sobrien#define GET_LL(i) \
47378556Sobrien   (((UInt32)s->ll16[i]) | (GET_LL4(i) << 16))
47478556Sobrien
47578556Sobrien#define BZ_GET_SMALL(cccc)                            \
476177420Sdelphij    /* c_tPos is unsigned, hence test < 0 is pointless. */ \
477177420Sdelphij    if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \
478177420Sdelphij    cccc = BZ2_indexIntoF ( s->tPos, s->cftab );    \
479177420Sdelphij    s->tPos = GET_LL(s->tPos);
48078556Sobrien
48178556Sobrien
48278556Sobrien/*-- externs for decompression. --*/
48378556Sobrien
48478556Sobrienextern Int32
48578556SobrienBZ2_indexIntoF ( Int32, Int32* );
48678556Sobrien
48778556Sobrienextern Int32
48878556SobrienBZ2_decompress ( DState* );
48978556Sobrien
49078556Sobrienextern void
49178556SobrienBZ2_hbCreateDecodeTables ( Int32*, Int32*, Int32*, UChar*,
49278556Sobrien                           Int32,  Int32, Int32 );
49378556Sobrien
49478556Sobrien
49578556Sobrien#endif
49678556Sobrien
49778556Sobrien
49878556Sobrien/*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/
49978556Sobrien
50078556Sobrien#ifdef BZ_NO_STDIO
50178556Sobrien#ifndef NULL
50278556Sobrien#define NULL 0
50378556Sobrien#endif
50478556Sobrien#endif
50578556Sobrien
50678556Sobrien
50778556Sobrien/*-------------------------------------------------------------*/
50878556Sobrien/*--- end                                   bzlib_private.h ---*/
50978556Sobrien/*-------------------------------------------------------------*/
510