183138Skris/* 283138Skris * Public domain stdio wrapper for libz, written by Johan Danielsson. 383138Skris */ 483138Skris 584228Sdillon#include <sys/cdefs.h> 6237410Sdelphij__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 26237410Sdelphijstatic int 27237410Sdelphijxgzclose(void *cookie) 28237410Sdelphij{ 29237410Sdelphij return gzclose(cookie); 30237410Sdelphij} 31237410Sdelphij 3283138SkrisFILE * 3383138Skriszopen(const char *fname, const char *mode) 3483138Skris{ 3583138Skris gzFile gz = gzopen(fname, mode); 3683138Skris if(gz == NULL) 3783138Skris return NULL; 3883138Skris 3983138Skris if(*mode == 'r') 40237410Sdelphij return (funopen(gz, xgzread, NULL, NULL, xgzclose)); 4183138Skris else 42237410Sdelphij return (funopen(gz, NULL, xgzwrite, NULL, xgzclose)); 4383138Skris} 44