Files
Microtransactions64/include/gzip.h
2021-01-25 22:55:36 -05:00

60 lines
1.3 KiB
C

#ifndef __GZIP_H__
#define __GZIP_H__
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
/*
#ifndef u8
#define u8 unsigned char;
#endif
#ifndef u16
#define u16 unsigned short;
#endif
#ifndef u32
#define u32 unsigned long;
#endif
*/
#define INBUFSIZ 8192 // input buffer size
#define OUTBUFSIZ 8192 // output buffer size
#define WSIZE 0x8000
typedef struct {
u8 * next_addr;
u32 rest_size;
} FILE_HND;
#define get_byte() (inptr < insize ? inbuf[inptr++] : fill_inbuf(0))
#define try_byte() (inptr < insize ? inbuf[inptr++] : fill_inbuf(1))
/* Macros for getting two-byte and four-byte header values */
#define SH(p) ((u16)(u8)((p)[0]) | ((u16)(u8)((p)[1]) << 8))
#define LG(p) ((u32)(SH(p)) | ((u32)(SH((p)+2)) << 16))
extern unsigned int insize; // valid bytes in inbuf
extern unsigned int inptr; // index of next byte to be processed in inbuf
extern unsigned int outcnt; // bytes in output buffer
extern u8 inbuf[]; // input buffer
extern u8 outbuf[]; // output buffer
extern u8 window[]; // Sliding window and suffix table
extern int inflate(void);
extern int fill_inbuf(int eof_ok);
extern int flush_window(void);
//===========================================================================
//
//
u32 expand_gzip(u8 *src_addr, u8 *dst_addr, u32 size, u32 outbytes_limit);
#endif