zopen.c revision 84228
183138Skris/* 283138Skris * Public domain stdio wrapper for libz, written by Johan Danielsson. 383138Skris */ 483138Skris 584228Sdillon#include <sys/cdefs.h> 684228Sdillon__FBSDID("$FreeBSD: head/lib/libz/zopen.c 84228 2001-09-30 22:39:00Z dillon $"); 783138Skris 883138Skris#include <stdio.h> 983138Skris#include <zlib.h> 1083138Skris 1183138SkrisFILE *zopen(const char *fname, const char *mode); 1283138Skris 1383138Skris/* convert arguments */ 1483138Skrisstatic int 1583138Skrisxgzread(void *cookie, char *data, int size) 1683138Skris{ 1783138Skris return gzread(cookie, data, size); 1883138Skris} 1983138Skris 2083138Skrisstatic int 2183138Skrisxgzwrite(void *cookie, const char *data, int size) 2283138Skris{ 2383138Skris return gzwrite(cookie, (void*)data, size); 2483138Skris} 2583138Skris 2683138SkrisFILE * 2783138Skriszopen(const char *fname, const char *mode) 2883138Skris{ 2983138Skris gzFile gz = gzopen(fname, mode); 3083138Skris if(gz == NULL) 3183138Skris return NULL; 3283138Skris 3383138Skris if(*mode == 'r') 3483138Skris return (funopen(gz, xgzread, NULL, NULL, gzclose)); 3583138Skris else 3683138Skris return (funopen(gz, NULL, xgzwrite, NULL, gzclose)); 3783138Skris} 38