bzip2 (1.0.8)

(root)/
include/
bzlib.h
       1  
       2  /*-------------------------------------------------------------*/
       3  /*--- Public header file for the library.                   ---*/
       4  /*---                                               bzlib.h ---*/
       5  /*-------------------------------------------------------------*/
       6  
       7  /* ------------------------------------------------------------------
       8     This file is part of bzip2/libbzip2, a program and library for
       9     lossless, block-sorting data compression.
      10  
      11     bzip2/libbzip2 version 1.0.8 of 13 July 2019
      12     Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
      13  
      14     Please read the WARNING, DISCLAIMER and PATENTS sections in the 
      15     README file.
      16  
      17     This program is released under the terms of the license contained
      18     in the file LICENSE.
      19     ------------------------------------------------------------------ */
      20  
      21  
      22  #ifndef _BZLIB_H
      23  #define _BZLIB_H
      24  
      25  #ifdef __cplusplus
      26  extern "C" {
      27  #endif
      28  
      29  #define BZ_RUN               0
      30  #define BZ_FLUSH             1
      31  #define BZ_FINISH            2
      32  
      33  #define BZ_OK                0
      34  #define BZ_RUN_OK            1
      35  #define BZ_FLUSH_OK          2
      36  #define BZ_FINISH_OK         3
      37  #define BZ_STREAM_END        4
      38  #define BZ_SEQUENCE_ERROR    (-1)
      39  #define BZ_PARAM_ERROR       (-2)
      40  #define BZ_MEM_ERROR         (-3)
      41  #define BZ_DATA_ERROR        (-4)
      42  #define BZ_DATA_ERROR_MAGIC  (-5)
      43  #define BZ_IO_ERROR          (-6)
      44  #define BZ_UNEXPECTED_EOF    (-7)
      45  #define BZ_OUTBUFF_FULL      (-8)
      46  #define BZ_CONFIG_ERROR      (-9)
      47  
      48  typedef 
      49     struct {
      50        char *next_in;
      51        unsigned int avail_in;
      52        unsigned int total_in_lo32;
      53        unsigned int total_in_hi32;
      54  
      55        char *next_out;
      56        unsigned int avail_out;
      57        unsigned int total_out_lo32;
      58        unsigned int total_out_hi32;
      59  
      60        void *state;
      61  
      62        void *(*bzalloc)(void *,int,int);
      63        void (*bzfree)(void *,void *);
      64        void *opaque;
      65     } 
      66     bz_stream;
      67  
      68  
      69  #ifndef BZ_IMPORT
      70  #define BZ_EXPORT
      71  #endif
      72  
      73  #ifndef BZ_NO_STDIO
      74  /* Need a definitition for FILE */
      75  #include <stdio.h>
      76  #endif
      77  
      78  #ifdef _WIN32
      79  #   include <windows.h>
      80  #   ifdef small
      81        /* windows.h define small to char */
      82  #      undef small
      83  #   endif
      84  #   ifdef BZ_EXPORT
      85  #   define BZ_API(func) WINAPI func
      86  #   define BZ_EXTERN extern
      87  #   else
      88     /* import windows dll dynamically */
      89  #   define BZ_API(func) (WINAPI * func)
      90  #   define BZ_EXTERN
      91  #   endif
      92  #else
      93  #   define BZ_API(func) func
      94  #   define BZ_EXTERN extern
      95  #endif
      96  
      97  
      98  /*-- Core (low-level) library functions --*/
      99  
     100  BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( 
     101        bz_stream* strm, 
     102        int        blockSize100k, 
     103        int        verbosity, 
     104        int        workFactor 
     105     );
     106  
     107  BZ_EXTERN int BZ_API(BZ2_bzCompress) ( 
     108        bz_stream* strm, 
     109        int action 
     110     );
     111  
     112  BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( 
     113        bz_stream* strm 
     114     );
     115  
     116  BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( 
     117        bz_stream *strm, 
     118        int       verbosity, 
     119        int       small
     120     );
     121  
     122  BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( 
     123        bz_stream* strm 
     124     );
     125  
     126  BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( 
     127        bz_stream *strm 
     128     );
     129  
     130  
     131  
     132  /*-- High(er) level library functions --*/
     133  
     134  #ifndef BZ_NO_STDIO
     135  #define BZ_MAX_UNUSED 5000
     136  
     137  typedef void BZFILE;
     138  
     139  BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( 
     140        int*  bzerror,   
     141        FILE* f, 
     142        int   verbosity, 
     143        int   small,
     144        void* unused,    
     145        int   nUnused 
     146     );
     147  
     148  BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( 
     149        int*    bzerror, 
     150        BZFILE* b 
     151     );
     152  
     153  BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( 
     154        int*    bzerror, 
     155        BZFILE* b, 
     156        void**  unused,  
     157        int*    nUnused 
     158     );
     159  
     160  BZ_EXTERN int BZ_API(BZ2_bzRead) ( 
     161        int*    bzerror, 
     162        BZFILE* b, 
     163        void*   buf, 
     164        int     len 
     165     );
     166  
     167  BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( 
     168        int*  bzerror,      
     169        FILE* f, 
     170        int   blockSize100k, 
     171        int   verbosity, 
     172        int   workFactor 
     173     );
     174  
     175  BZ_EXTERN void BZ_API(BZ2_bzWrite) ( 
     176        int*    bzerror, 
     177        BZFILE* b, 
     178        void*   buf, 
     179        int     len 
     180     );
     181  
     182  BZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( 
     183        int*          bzerror, 
     184        BZFILE*       b, 
     185        int           abandon, 
     186        unsigned int* nbytes_in, 
     187        unsigned int* nbytes_out 
     188     );
     189  
     190  BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( 
     191        int*          bzerror, 
     192        BZFILE*       b, 
     193        int           abandon, 
     194        unsigned int* nbytes_in_lo32, 
     195        unsigned int* nbytes_in_hi32, 
     196        unsigned int* nbytes_out_lo32, 
     197        unsigned int* nbytes_out_hi32
     198     );
     199  #endif
     200  
     201  
     202  /*-- Utility functions --*/
     203  
     204  BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( 
     205        char*         dest, 
     206        unsigned int* destLen,
     207        char*         source, 
     208        unsigned int  sourceLen,
     209        int           blockSize100k, 
     210        int           verbosity, 
     211        int           workFactor 
     212     );
     213  
     214  BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( 
     215        char*         dest, 
     216        unsigned int* destLen,
     217        char*         source, 
     218        unsigned int  sourceLen,
     219        int           small, 
     220        int           verbosity 
     221     );
     222  
     223  
     224  /*--
     225     Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp)
     226     to support better zlib compatibility.
     227     This code is not _officially_ part of libbzip2 (yet);
     228     I haven't tested it, documented it, or considered the
     229     threading-safeness of it.
     230     If this code breaks, please contact both Yoshioka and me.
     231  --*/
     232  
     233  BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) (
     234        void
     235     );
     236  
     237  #ifndef BZ_NO_STDIO
     238  BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) (
     239        const char *path,
     240        const char *mode
     241     );
     242  
     243  BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) (
     244        int        fd,
     245        const char *mode
     246     );
     247           
     248  BZ_EXTERN int BZ_API(BZ2_bzread) (
     249        BZFILE* b, 
     250        void* buf, 
     251        int len 
     252     );
     253  
     254  BZ_EXTERN int BZ_API(BZ2_bzwrite) (
     255        BZFILE* b, 
     256        void*   buf, 
     257        int     len 
     258     );
     259  
     260  BZ_EXTERN int BZ_API(BZ2_bzflush) (
     261        BZFILE* b
     262     );
     263  
     264  BZ_EXTERN void BZ_API(BZ2_bzclose) (
     265        BZFILE* b
     266     );
     267  
     268  BZ_EXTERN const char * BZ_API(BZ2_bzerror) (
     269        BZFILE *b, 
     270        int    *errnum
     271     );
     272  #endif
     273  
     274  #ifdef __cplusplus
     275  }
     276  #endif
     277  
     278  #endif
     279  
     280  /*-------------------------------------------------------------*/
     281  /*--- end                                           bzlib.h ---*/
     282  /*-------------------------------------------------------------*/