1*44bedb31SLionel Sambuc /* $NetBSD: ioapi.h,v 1.1.1.1 2006/01/14 20:10:57 christos Exp $ */ 2*44bedb31SLionel Sambuc 3*44bedb31SLionel Sambuc /* ioapi.h -- IO base function header for compress/uncompress .zip 4*44bedb31SLionel Sambuc files using zlib + zip or unzip API 5*44bedb31SLionel Sambuc 6*44bedb31SLionel Sambuc Version 1.01e, February 12th, 2005 7*44bedb31SLionel Sambuc 8*44bedb31SLionel Sambuc Copyright (C) 1998-2005 Gilles Vollant 9*44bedb31SLionel Sambuc */ 10*44bedb31SLionel Sambuc 11*44bedb31SLionel Sambuc #ifndef _ZLIBIOAPI_H 12*44bedb31SLionel Sambuc #define _ZLIBIOAPI_H 13*44bedb31SLionel Sambuc 14*44bedb31SLionel Sambuc 15*44bedb31SLionel Sambuc #define ZLIB_FILEFUNC_SEEK_CUR (1) 16*44bedb31SLionel Sambuc #define ZLIB_FILEFUNC_SEEK_END (2) 17*44bedb31SLionel Sambuc #define ZLIB_FILEFUNC_SEEK_SET (0) 18*44bedb31SLionel Sambuc 19*44bedb31SLionel Sambuc #define ZLIB_FILEFUNC_MODE_READ (1) 20*44bedb31SLionel Sambuc #define ZLIB_FILEFUNC_MODE_WRITE (2) 21*44bedb31SLionel Sambuc #define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3) 22*44bedb31SLionel Sambuc 23*44bedb31SLionel Sambuc #define ZLIB_FILEFUNC_MODE_EXISTING (4) 24*44bedb31SLionel Sambuc #define ZLIB_FILEFUNC_MODE_CREATE (8) 25*44bedb31SLionel Sambuc 26*44bedb31SLionel Sambuc 27*44bedb31SLionel Sambuc #ifndef ZCALLBACK 28*44bedb31SLionel Sambuc 29*44bedb31SLionel Sambuc #if (defined(WIN32) || defined (WINDOWS) || defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK) 30*44bedb31SLionel Sambuc #define ZCALLBACK CALLBACK 31*44bedb31SLionel Sambuc #else 32*44bedb31SLionel Sambuc #define ZCALLBACK 33*44bedb31SLionel Sambuc #endif 34*44bedb31SLionel Sambuc #endif 35*44bedb31SLionel Sambuc 36*44bedb31SLionel Sambuc #ifdef __cplusplus 37*44bedb31SLionel Sambuc extern "C" { 38*44bedb31SLionel Sambuc #endif 39*44bedb31SLionel Sambuc 40*44bedb31SLionel Sambuc typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, const char* filename, int mode)); 41*44bedb31SLionel Sambuc typedef uLong (ZCALLBACK *read_file_func) OF((voidpf opaque, voidpf stream, void* buf, uLong size)); 42*44bedb31SLionel Sambuc typedef uLong (ZCALLBACK *write_file_func) OF((voidpf opaque, voidpf stream, const void* buf, uLong size)); 43*44bedb31SLionel Sambuc typedef long (ZCALLBACK *tell_file_func) OF((voidpf opaque, voidpf stream)); 44*44bedb31SLionel Sambuc typedef long (ZCALLBACK *seek_file_func) OF((voidpf opaque, voidpf stream, uLong offset, int origin)); 45*44bedb31SLionel Sambuc typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream)); 46*44bedb31SLionel Sambuc typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream)); 47*44bedb31SLionel Sambuc 48*44bedb31SLionel Sambuc typedef struct zlib_filefunc_def_s 49*44bedb31SLionel Sambuc { 50*44bedb31SLionel Sambuc open_file_func zopen_file; 51*44bedb31SLionel Sambuc read_file_func zread_file; 52*44bedb31SLionel Sambuc write_file_func zwrite_file; 53*44bedb31SLionel Sambuc tell_file_func ztell_file; 54*44bedb31SLionel Sambuc seek_file_func zseek_file; 55*44bedb31SLionel Sambuc close_file_func zclose_file; 56*44bedb31SLionel Sambuc testerror_file_func zerror_file; 57*44bedb31SLionel Sambuc voidpf opaque; 58*44bedb31SLionel Sambuc } zlib_filefunc_def; 59*44bedb31SLionel Sambuc 60*44bedb31SLionel Sambuc 61*44bedb31SLionel Sambuc 62*44bedb31SLionel Sambuc void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); 63*44bedb31SLionel Sambuc 64*44bedb31SLionel Sambuc #define ZREAD(filefunc,filestream,buf,size) ((*((filefunc).zread_file))((filefunc).opaque,filestream,buf,size)) 65*44bedb31SLionel Sambuc #define ZWRITE(filefunc,filestream,buf,size) ((*((filefunc).zwrite_file))((filefunc).opaque,filestream,buf,size)) 66*44bedb31SLionel Sambuc #define ZTELL(filefunc,filestream) ((*((filefunc).ztell_file))((filefunc).opaque,filestream)) 67*44bedb31SLionel Sambuc #define ZSEEK(filefunc,filestream,pos,mode) ((*((filefunc).zseek_file))((filefunc).opaque,filestream,pos,mode)) 68*44bedb31SLionel Sambuc #define ZCLOSE(filefunc,filestream) ((*((filefunc).zclose_file))((filefunc).opaque,filestream)) 69*44bedb31SLionel Sambuc #define ZERROR(filefunc,filestream) ((*((filefunc).zerror_file))((filefunc).opaque,filestream)) 70*44bedb31SLionel Sambuc 71*44bedb31SLionel Sambuc 72*44bedb31SLionel Sambuc #ifdef __cplusplus 73*44bedb31SLionel Sambuc } 74*44bedb31SLionel Sambuc #endif 75*44bedb31SLionel Sambuc 76*44bedb31SLionel Sambuc #endif 77*44bedb31SLionel Sambuc 78