Cross Reference: zopen.c
xref
: /
illumos-gate
/
usr
/
src
/
boot
/
lib
/
libz
/
zopen.c
Home
History
Annotate
Line#
Navigate
Download
Search
only in
./
/*
* Public domain stdio wrapper for libz, written by Johan Danielsson.
*/
#
include
<
sys
/
cdefs.h
>
__FBSDID
(
"$FreeBSD$"
);
#
include
<
stdio.h
>
#
include
<
zlib.h
>
FILE
*
zopen
(
const
char
*
fname
,
const
char
*
mode
);
/* convert arguments */
static
int
xgzread
(
void
*
cookie
,
char
*
data
,
int
size
)
{
return
gzread
(
cookie
,
data
,
size
);
}
static
int
xgzwrite
(
void
*
cookie
,
const
char
*
data
,
int
size
)
{
return
gzwrite
(
cookie
, (
void
*)
data
,
size
);
}
static
int
xgzclose
(
void
*
cookie
)
{
return
gzclose
(
cookie
);
}
static
fpos_t
xgzseek
(
void
*
cookie
,
fpos_t
offset
,
int
whence
)
{
return
gzseek
(
cookie
, (
z_off_t
)
offset
,
whence
);
}
FILE
*
zopen
(
const
char
*
fname
,
const
char
*
mode
)
{
gzFile
gz
=
gzopen
(
fname
,
mode
);
if
(
gz
==
NULL
)
return
NULL
;
if
(*
mode
==
'r'
)
return
(
funopen
(
gz
,
xgzread
,
NULL
,
xgzseek
,
xgzclose
));
else
return
(
funopen
(
gz
,
NULL
,
xgzwrite
,
xgzseek
,
xgzclose
));
}