zopen.c revision 83138
183138Skris/* 283138Skris * Public domain stdio wrapper for libz, written by Johan Danielsson. 383138Skris */ 483138Skris 583138Skris#ifndef lint 683138Skrisstatic const char rcsid[] = 783138Skris "$FreeBSD: head/lib/libz/zopen.c 83138 2001-09-06 09:14:49Z kris $"; 883138Skris#endif /* not lint */ 983138Skris 1083138Skris#include <stdio.h> 1183138Skris#include <zlib.h> 1283138Skris 1383138SkrisFILE *zopen(const char *fname, const char *mode); 1483138Skris 1583138Skris/* convert arguments */ 1683138Skrisstatic int 1783138Skrisxgzread(void *cookie, char *data, int size) 1883138Skris{ 1983138Skris return gzread(cookie, data, size); 2083138Skris} 2183138Skris 2283138Skrisstatic int 2383138Skrisxgzwrite(void *cookie, const char *data, int size) 2483138Skris{ 2583138Skris return gzwrite(cookie, (void*)data, size); 2683138Skris} 2783138Skris 2883138SkrisFILE * 2983138Skriszopen(const char *fname, const char *mode) 3083138Skris{ 3183138Skris gzFile gz = gzopen(fname, mode); 3283138Skris if(gz == NULL) 3383138Skris return NULL; 3483138Skris 3583138Skris if(*mode == 'r') 3683138Skris return (funopen(gz, xgzread, NULL, NULL, gzclose)); 3783138Skris else 3883138Skris return (funopen(gz, NULL, xgzwrite, NULL, gzclose)); 3983138Skris} 40