xref: /plan9/sys/src/cmd/bzip2/lib/bzlib_stdio_private.h (revision 59cc4ca53493a3c6d2349fe2b7f7c40f7dce7294)
1*59cc4ca5SDavid du Colombier /*
2*59cc4ca5SDavid du Colombier  * THIS FILE IS NOT IDENTICAL TO THE ORIGINAL
3*59cc4ca5SDavid du Colombier  * FROM THE BZIP2 DISTRIBUTION.
4*59cc4ca5SDavid du Colombier  *
5*59cc4ca5SDavid du Colombier  * It has been modified, mainly to break the library
6*59cc4ca5SDavid du Colombier  * into smaller pieces.
7*59cc4ca5SDavid du Colombier  *
8*59cc4ca5SDavid du Colombier  * Russ Cox
9*59cc4ca5SDavid du Colombier  * rsc@plan9.bell-labs.com
10*59cc4ca5SDavid du Colombier  * July 2000
11*59cc4ca5SDavid du Colombier  */
12*59cc4ca5SDavid du Colombier 
13*59cc4ca5SDavid du Colombier extern void BZ2_bz__AssertH__fail ( int errcode );
14*59cc4ca5SDavid du Colombier 
15*59cc4ca5SDavid du Colombier /* undo definitions in bzlib_private.h */
16*59cc4ca5SDavid du Colombier #undef AssertH
17*59cc4ca5SDavid du Colombier #undef AssertD
18*59cc4ca5SDavid du Colombier #undef VPrintf0
19*59cc4ca5SDavid du Colombier #undef VPrintf1
20*59cc4ca5SDavid du Colombier #undef VPrintf2
21*59cc4ca5SDavid du Colombier #undef VPrintf3
22*59cc4ca5SDavid du Colombier #undef VPrintf4
23*59cc4ca5SDavid du Colombier #undef VPrintf5
24*59cc4ca5SDavid du Colombier 
25*59cc4ca5SDavid du Colombier #define AssertH(cond,errcode) \
26*59cc4ca5SDavid du Colombier    { if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); }
27*59cc4ca5SDavid du Colombier #if BZ_DEBUG
28*59cc4ca5SDavid du Colombier #define AssertD(cond,msg) \
29*59cc4ca5SDavid du Colombier    { if (!(cond)) {       \
30*59cc4ca5SDavid du Colombier       fprintf ( stderr,   \
31*59cc4ca5SDavid du Colombier         "\n\nlibbzip2(debug build): internal error\n\t%s\n", msg );\
32*59cc4ca5SDavid du Colombier       exit(1); \
33*59cc4ca5SDavid du Colombier    }}
34*59cc4ca5SDavid du Colombier #else
35*59cc4ca5SDavid du Colombier #define AssertD(cond,msg) /* */
36*59cc4ca5SDavid du Colombier #endif
37*59cc4ca5SDavid du Colombier #define VPrintf0(zf) \
38*59cc4ca5SDavid du Colombier    fprintf(stderr,zf)
39*59cc4ca5SDavid du Colombier #define VPrintf1(zf,za1) \
40*59cc4ca5SDavid du Colombier    fprintf(stderr,zf,za1)
41*59cc4ca5SDavid du Colombier #define VPrintf2(zf,za1,za2) \
42*59cc4ca5SDavid du Colombier    fprintf(stderr,zf,za1,za2)
43*59cc4ca5SDavid du Colombier #define VPrintf3(zf,za1,za2,za3) \
44*59cc4ca5SDavid du Colombier    fprintf(stderr,zf,za1,za2,za3)
45*59cc4ca5SDavid du Colombier #define VPrintf4(zf,za1,za2,za3,za4) \
46*59cc4ca5SDavid du Colombier    fprintf(stderr,zf,za1,za2,za3,za4)
47*59cc4ca5SDavid du Colombier #define VPrintf5(zf,za1,za2,za3,za4,za5) \
48*59cc4ca5SDavid du Colombier    fprintf(stderr,zf,za1,za2,za3,za4,za5)
49*59cc4ca5SDavid du Colombier 
50*59cc4ca5SDavid du Colombier #define BZ_SETERR(eee)                    \
51*59cc4ca5SDavid du Colombier {                                         \
52*59cc4ca5SDavid du Colombier    if (bzerror != NULL) *bzerror = eee;   \
53*59cc4ca5SDavid du Colombier    if (bzf != NULL) bzf->lastErr = eee;   \
54*59cc4ca5SDavid du Colombier }
55*59cc4ca5SDavid du Colombier 
56*59cc4ca5SDavid du Colombier typedef
57*59cc4ca5SDavid du Colombier    struct {
58*59cc4ca5SDavid du Colombier       FILE*     handle;
59*59cc4ca5SDavid du Colombier       Char      buf[BZ_MAX_UNUSED];
60*59cc4ca5SDavid du Colombier       Int32     bufN;
61*59cc4ca5SDavid du Colombier       Bool      writing;
62*59cc4ca5SDavid du Colombier       bz_stream strm;
63*59cc4ca5SDavid du Colombier       Int32     lastErr;
64*59cc4ca5SDavid du Colombier       Bool      initialisedOk;
65*59cc4ca5SDavid du Colombier    }
66*59cc4ca5SDavid du Colombier    bzFile;
67*59cc4ca5SDavid du Colombier 
68*59cc4ca5SDavid du Colombier extern Bool bz_feof( FILE* );
69*59cc4ca5SDavid du Colombier 
70