⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fopencookie.c

📁 Axis 221 camera embedded programing interface
💻 C
字号:
/* Copyright (C) 2004       Manuel Novoa III    <mjn3@codepoet.org> * * GNU Library General Public License (LGPL) version 2 or later. * * Dedicated to Toni.  See uClibc/DEDICATION.mjn3 for details. */#include "_stdio.h"#ifndef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__#error no custom streams!#endif/* NOTE: GLIBC difference!!! -- fopencookie * According to the info pages, glibc allows seeking within buffers even if * no seek function is supplied.  We don't. *//* NOTE: GLIBC difference!!! -- fopencookie * When compiled without large file support, the offset pointer for the * cookie_seek function is off_t * and not off64_t * as for glibc. *//* NOTE: GLIBC difference!!! -- fopencookie (bcc only) * Since bcc doesn't support passing of structs, we define fopencookie as a * macro in terms of _fopencookie which takes a struct * for the io functions * instead. *//* Currently no real reentrancy issues other than a possible double close(). */#ifndef __BCC__FILE *fopencookie(void * __restrict cookie, const char * __restrict mode,				  cookie_io_functions_t io_functions)#elseFILE *_fopencookie(void * __restrict cookie, const char * __restrict mode,				   register cookie_io_functions_t *io_functions)#endif{	FILE *stream;	/* Fake an fdopen guaranteed to pass the _stdio_fopen basic agreement	 * check without an fcntl call. */	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;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -