funopen
FILE *funopen(const void *,
#define fropen(cookie, fn) funopen(cookie, fn, 0, 0, 0)
#define fwopen(cookie, fn) funopen(cookie, 0, fn, 0, 0)
return funopen(gz, xgzread, NULL, NULL, (int (*)(void *))gzclose);
return funopen(gz, NULL, xgzwrite, NULL, (int (*)(void *))gzclose);
f = funopen(io, _ftp_readfn, _ftp_writefn, _ftp_seekfn, _ftp_closefn);
f = funopen(io, _http_readfn, _http_writefn, NULL, _http_closefn);
FILE *fp = funopen(&ib, readfn, NULL, NULL, NULL);
FILE *fp = funopen(&ib, readfn, NULL, NULL, NULL);
return (funopen(zs, zread, NULL, NULL, zclose));
return (funopen(zs, NULL, zwrite, NULL, zclose));
lz->fin = funopen(lz, lz_read, NULL, NULL, lz_close);
return funopen(zs, zread, NULL, NULL, zclose);
return funopen((void *)(uintptr_t)fd,