#include #include #include #include "gzip.h" #define ZCHUNK 16384 #define BUFMIN 128 #define BUFCHUNK (1024*128) int z_readfile(FILE *F,char **buf,size_t *size) { z_stream zs; int r; unsigned char in[ZCHUNK]; size_t bufsize; void *newbuf; memset(&zs,0,sizeof(zs)); *buf = NULL; bufsize=*size=0; r=inflateInit2(&zs,47); if (r != Z_OK) return r; do { zs.avail_in = fread(in, 1, sizeof(in), F); if (ferror(F)) { r = Z_ERRNO; goto zerr; } if (!zs.avail_in) break; zs.next_in = in; do { if ((bufsize-*size)