| + |
/* Copyright (c) 2014, Vsevolod Stakhov
|
| + |
* All rights reserved.
|
| + |
*
|
| + |
* Redistribution and use in source and binary forms, with or without
|
| + |
* modification, are permitted provided that the following conditions are met:
|
| + |
* * Redistributions of source code must retain the above copyright
|
| + |
* notice, this list of conditions and the following disclaimer.
|
| + |
* * Redistributions in binary form must reproduce the above copyright
|
| + |
* notice, this list of conditions and the following disclaimer in the
|
| + |
* documentation and/or other materials provided with the distribution.
|
| + |
*
|
| + |
* THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY
|
| + |
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
| + |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
| + |
* DISCLAIMED. IN NO EVENT SHALL AUTHOR BE LIABLE FOR ANY
|
| + |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
| + |
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
| + |
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
| + |
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| + |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
| + |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| + |
*/
|
| + |
#define _GNU_SOURCE
|
| + |
#include <stdio.h>
|
| + |
|
| + |
#include "bsd_compat.h"
|
| + |
|
| + |
#ifndef HAVE_FUNOPEN
|
| + |
|
| + |
FILE *
|
| + |
funopen(const void *cookie, int (*readfn)(void *, char *, int),
|
| + |
int (*writefn)(void *, const char *, int),
|
| + |
off_t (*seekfn)(void *, off_t, int), int (*closefn)(void *))
|
| + |
{
|
| + |
cookie_io_functions_t c;
|
| + |
c.read = readfn;
|
| + |
c.write = writefn;
|
| + |
c.seek = seekfn;
|
| + |
c.close = closefn;
|
| + |
|
| + |
return (fopencookie(__DECONST(void *, cookie), "a+", c));
|
| + |
}
|
| + |
|
| + |
#endif
|