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

📄 fillbuf.c

📁 操作系统源代码
💻 C
字号:
/* * fillbuf.c - fill a buffer *//* $Header: fillbuf.c,v 1.5 90/06/21 11:13:23 eck Exp $ */#if	defined(_POSIX_SOURCE)#include	<sys/types.h>#endif#include	<stdio.h>#include	<stdlib.h>#include	"loc_incl.h"ssize_t _read(ssize_t d, char *buf, size_t nbytes);int__fillbuf(register FILE *stream){	static unsigned char ch[FOPEN_MAX];	register int i;	stream->_count = 0;	if (fileno(stream) < 0) return EOF;	if (io_testflag(stream, (_IOEOF | _IOERR ))) return EOF; 	if (!io_testflag(stream, _IOREAD))	     { stream->_flags |= _IOERR; return EOF; }	if (io_testflag(stream, _IOWRITING))	     { stream->_flags |= _IOERR; return EOF; }	if (!io_testflag(stream, _IOREADING))		stream->_flags |= _IOREADING;		if (!io_testflag(stream, _IONBF) && !stream->_buf) {		stream->_buf = (unsigned char *) malloc(BUFSIZ);		if (!stream->_buf) {			stream->_flags |= _IONBF;		}		else {			stream->_flags |= _IOMYBUF;			stream->_bufsiz = BUFSIZ;		}	}	/* flush line-buffered output when filling an input buffer */	for (i = 0; i < FOPEN_MAX; i++) {		if (__iotab[i] && io_testflag(__iotab[i], _IOLBF))			if (io_testflag(__iotab[i], _IOWRITING))				(void) fflush(__iotab[i]);	}	if (!stream->_buf) {		stream->_buf = &ch[fileno(stream)];		stream->_bufsiz = 1;	}	stream->_ptr = stream->_buf;	stream->_count = _read(stream->_fd, (char *)stream->_buf, stream->_bufsiz);	if (stream->_count <= 0){		if (stream->_count == 0) {			stream->_flags |= _IOEOF;		}		else 			stream->_flags |= _IOERR;		return EOF;	}	stream->_count--;	return *stream->_ptr++;}

⌨️ 快捷键说明

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