12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #include <features.h>
- #ifdef __USE_GNU
- #include "_stdio.h"
- #ifndef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__
- #error no custom streams!
- #endif
- #ifndef __BCC__
- FILE *fopencookie(void * __restrict cookie, const char * __restrict mode,
- cookie_io_functions_t io_functions)
- #else
- FILE *_fopencookie(void * __restrict cookie, const char * __restrict mode,
- register cookie_io_functions_t *io_functions)
- #endif
- {
- FILE *stream;
-
- stream = _stdio_fopen(((intptr_t)(INT_MAX-1)), mode, NULL, INT_MAX);
- if (stream) {
- stream->__filedes = -1;
- #ifndef __BCC__
- stream->__gcs = io_functions;
- #else
- stream->__gcs.read = io_functions->read;
- stream->__gcs.write = io_functions->write;
- stream->__gcs.seek = io_functions->seek;
- stream->__gcs.close = io_functions->close;
- #endif
- stream->__cookie = cookie;
- __STDIO_STREAM_VALIDATE(stream);
- }
- return stream;
- }
- #ifndef __BCC__
- libc_hidden_def(fopencookie)
- #endif
- #endif
|