Changeset View
Changeset View
Standalone View
Standalone View
lib/libz/zopen.c
/* | /* | ||||
* Public domain stdio wrapper for libz, written by Johan Danielsson. | * Public domain stdio wrapper for libz, written by Johan Danielsson. | ||||
*/ | */ | ||||
#include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||
__FBSDID("$FreeBSD$"); | __FBSDID("$FreeBSD$"); | ||||
#include <stdio.h> | #include <stdio.h> | ||||
#include <zlib.h> | #include <zlib.h> | ||||
FILE *zopen(const char *fname, const char *mode); | FILE *zopen(const char *fname, const char *mode); | ||||
FILE *zdopen(int fd, const char *mode); | |||||
/* convert arguments */ | /* convert arguments */ | ||||
static int | static int | ||||
xgzread(void *cookie, char *data, int size) | xgzread(void *cookie, char *data, int size) | ||||
{ | { | ||||
return gzread(cookie, data, size); | return gzread(cookie, data, size); | ||||
} | } | ||||
Show All 16 Lines | |||||
} | } | ||||
FILE * | FILE * | ||||
zopen(const char *fname, const char *mode) | zopen(const char *fname, const char *mode) | ||||
{ | { | ||||
gzFile gz = gzopen(fname, mode); | gzFile gz = gzopen(fname, mode); | ||||
if(gz == NULL) | if(gz == NULL) | ||||
return NULL; | return NULL; | ||||
if(*mode == 'r') | |||||
return (funopen(gz, xgzread, NULL, xgzseek, xgzclose)); | |||||
else | |||||
return (funopen(gz, NULL, xgzwrite, xgzseek, xgzclose)); | |||||
} | |||||
FILE * | |||||
zdopen(int fd, const char *mode) | |||||
{ | |||||
gzFile gz; | |||||
gz = gzdopen(fd, mode); | |||||
if (gz == NULL) | |||||
return (NULL); | |||||
if(*mode == 'r') | if (*mode == 'r') | ||||
return (funopen(gz, xgzread, NULL, xgzseek, xgzclose)); | return (funopen(gz, xgzread, NULL, xgzseek, xgzclose)); | ||||
else | else | ||||
return (funopen(gz, NULL, xgzwrite, xgzseek, xgzclose)); | return (funopen(gz, NULL, xgzwrite, xgzseek, xgzclose)); | ||||
} | } |