1 #ifndef _FZP_H 2 #define _FZP_H 3 4 #include <zlib.h> 5 6 enum fzp_type 7 { 8 FZP_FILE=0, 9 FZP_COMPRESSED 10 }; 11 12 struct fzp 13 { 14 enum fzp_type type; 15 union 16 { 17 FILE *fp; 18 gzFile zp; 19 }; 20 char *buf; 21 size_t s; 22 }; 23 24 extern struct fzp *fzp_open(const char *path, const char *mode); 25 extern struct fzp *fzp_gzopen(const char *path, const char *mode); 26 extern int fzp_close(struct fzp **fzp); 27 28 extern int fzp_read(struct fzp *fzp, void *ptr, size_t nmemb); 29 extern size_t fzp_write(struct fzp *fzp, const void *ptr, size_t nmemb); 30 extern int fzp_eof(struct fzp *fzp); 31 extern int fzp_flush(struct fzp *fzp); 32 33 extern int fzp_seek(struct fzp *fzp, off_t offset, int whence); 34 extern off_t fzp_tell(struct fzp *fzp); 35 36 #ifndef HAVE_WIN32 37 extern int fzp_truncate(const char *path, enum fzp_type type, off_t length, 38 int compression); 39 #endif 40 41 extern int fzp_printf(struct fzp *fzp, const char *format, ...); 42 43 extern void fzp_setlinebuf(struct fzp *fzp); 44 45 extern char *fzp_gets(struct fzp *fzp, char *s, int size); 46 extern int fzp_fileno(struct fzp *fzp); 47 48 extern struct fzp *fzp_dopen(int fd, const char *mode); 49 extern struct fzp *fzp_gzdopen(int fd, const char *mode); 50 51 extern void fzp_ERR_print_errors_fp(struct fzp *fzp); 52 extern X509 *fzp_PEM_read_X509(struct fzp *fzp); 53 54 extern int fzp_read_ensure(struct fzp *fzp, void *ptr, size_t nmemb, 55 const char *func); 56 57 #endif 58