funopen
fp = funopen(bio, NULL, &_BIO_write, NULL, NULL);
FILE *funopen(const void *, int (*)(void *, char *, int),
#define fropen(cookie, fn) funopen(cookie, fn, 0, 0, 0)
#define fwopen(cookie, fn) funopen(cookie, 0, fn, 0, 0)
fp = funopen(thunk, readfn, writefn, _fopencookie_seek,
fp = funopen(ms, NULL, memstream_write, memstream_seek,
fp = funopen(ms, NULL, wmemstream_write, wmemstream_seek,
f = funopen(io, ftp_readfn, ftp_writefn, ftp_seekfn, ftp_closefn);
f = funopen(io, http_readfn, http_writefn, NULL, http_closefn);
fp = funopen(n, ftp_read_method, ftp_write_method, NULL, ftp_close_method); /* BSD 4.4 function! */
return (funopen(gz, xgzread, NULL, NULL, xgzclose));
return (funopen(gz, NULL, xgzwrite, NULL, xgzclose));
return (funopen(zs, zread, NULL, NULL, zclose));
return (funopen(zs, NULL, zwrite, NULL, zclose));
return funopen(zs, zread, NULL, NULL, zclose);