281 lines
5.9 KiB
C
Raw Normal View History

2025-04-10 17:31:33 +08:00
/*-------------------------------------------------------------*/
/*--- Public header file for the library. ---*/
/*--- bzlib.h ---*/
/*-------------------------------------------------------------*/
/* ------------------------------------------------------------------
This file is part of bzip2/libbzip2, a program and library for
lossless, block-sorting data compression.
bzip2/libbzip2 version 1.0.6 of 6 September 2010
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
Please read the WARNING, DISCLAIMER and PATENTS sections in the
README file.
This program is released under the terms of the license contained
in the file LICENSE.
------------------------------------------------------------------ */
#ifndef _BZLIB_H
#define _BZLIB_H
#ifdef __cplusplus
extern "C" {
#endif
#include "bzutil.h" //EC add
#define BZ_RUN 0
#define BZ_FLUSH 1
#define BZ_FINISH 2
#define BZ_OK 0
#define BZ_RUN_OK 1
#define BZ_FLUSH_OK 2
#define BZ_FINISH_OK 3
#define BZ_STREAM_END 4
#define BZ_SEQUENCE_ERROR (-1)
#define BZ_PARAM_ERROR (-2)
#define BZ_MEM_ERROR (-3)
#define BZ_DATA_ERROR (-4)
#define BZ_DATA_ERROR_MAGIC (-5)
#define BZ_IO_ERROR (-6)
#define BZ_UNEXPECTED_EOF (-7)
#define BZ_OUTBUFF_FULL (-8)
#define BZ_CONFIG_ERROR (-9)
#define BZ_NO_STDIO
typedef
struct {
char *next_in;
unsigned int avail_in;
unsigned int total_in_lo32;
unsigned int total_in_hi32;
char *next_out;
unsigned int avail_out;
unsigned int total_out_lo32;
unsigned int total_out_hi32;
void *state;
void *(*bzalloc)(void *,int,int);
void (*bzfree)(void *,void *);
void *opaque;
}
bz_stream;
#ifndef BZ_IMPORT
#define BZ_EXPORT
#endif
#ifndef BZ_NO_STDIO
/* Need a definitition for FILE */
#include <stdio.h>
#endif
#if defined(_WIN32)
# ifdef BZ_EXPORT
# define BZ_API(func) func
# define BZ_EXTERN extern
# else
/* import windows dll dynamically */
# define BZ_API(func) ( * func)
# define BZ_EXTERN
# endif
#else
# define BZ_API(func) func
# define BZ_EXTERN extern
#endif
/*-- Core (low-level) library functions --*/
BZ_EXTERN int BZ2_bzCompressInit (
bz_stream* strm,
int blockSize100k,
int verbosity,
int workFactor
);
BZ_EXTERN int BZ2_bzCompress (
bz_stream* strm,
int action
);
BZ_EXTERN int BZ2_bzCompressEnd (
bz_stream* strm
);
BZ_EXTERN int BZ2_bzDecompressInit (
bz_stream *strm,
int verbosity,
int small
);
BZ_EXTERN int BZ2_bzDecompress (
bz_stream* strm
);
BZ_EXTERN int BZ2_bzDecompressEnd(
bz_stream *strm
);
/*-- High(er) level library functions --*/
//#ifndef BZ_NO_STDIO
#define BZ_MAX_UNUSED 5000
typedef void BZFILE;
BZ_EXTERN BZFILE* BZ2_bzReadOpen (
int* bzerror,
buf_handle* f,
int verbosity,
int small,
void* unused,
int nUnused
);
BZ_EXTERN void BZ2_bzReadClose (
int* bzerror,
BZFILE* b
);
BZ_EXTERN void BZ2_bzReadGetUnused (
int* bzerror,
BZFILE* b,
void** unused,
int* nUnused
);
BZ_EXTERN int BZ2_bzRead (
int* bzerror,
BZFILE* b,
void* buf,
int len
);
BZ_EXTERN BZFILE* BZ2_bzWriteOpen (
int* bzerror,
buf_handle* f,
int blockSize100k,
int verbosity,
int workFactor
);
BZ_EXTERN void BZ2_bzWrite (
int* bzerror,
BZFILE* b,
void* buf,
int len
);
BZ_EXTERN void BZ2_bzWriteClose (
int* bzerror,
BZFILE* b,
int abandon,
unsigned int* nbytes_in,
unsigned int* nbytes_out
);
BZ_EXTERN void BZ2_bzWriteClose64 (
int* bzerror,
BZFILE* b,
int abandon,
unsigned int* nbytes_in_lo32,
unsigned int* nbytes_in_hi32,
unsigned int* nbytes_out_lo32,
unsigned int* nbytes_out_hi32
);
//#endif
/*-- Utility functions --*/
BZ_EXTERN int BZ2_bzBuffToBuffCompress (
char* dest,
unsigned int* destLen,
char* source,
unsigned int sourceLen,
int blockSize100k,
int verbosity,
int workFactor
);
BZ_EXTERN int BZ2_bzBuffToBuffDecompress (
char* dest,
unsigned int* destLen,
char* source,
unsigned int sourceLen,
int small,
int verbosity
);
/*--
Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp)
to support better zlib compatibility.
This code is not _officially_ part of libbzip2 (yet);
I haven't tested it, documented it, or considered the
threading-safeness of it.
If this code breaks, please contact both Yoshioka and me.
--*/
BZ_EXTERN const char * BZ2_bzlibVersion (
void
);
//#ifndef BZ_NO_STDIO
BZ_EXTERN BZFILE * BZ2_bzopen(
const char *path,
const char *mode
);
BZ_EXTERN BZFILE * BZ2_bzdopen (
int fd,
const char *mode
);
BZ_EXTERN int BZ2_bzread (
BZFILE* b,
void* buf,
int len
);
BZ_EXTERN int BZ2_bzwrite (
BZFILE* b,
void* buf,
int len
);
BZ_EXTERN int BZ2_bzflush (
BZFILE* b
);
BZ_EXTERN void BZ2_bzclose (
BZFILE* b
);
BZ_EXTERN const char * BZ2_bzerror (
BZFILE *b,
int *errnum
);
//#endif
#ifdef __cplusplus
}
#endif
#endif
/*-------------------------------------------------------------*/
/*--- end bzlib.h ---*/
/*-------------------------------------------------------------*/