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

📄 bgetc.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include	<u.h>#include	<libc.h>#include	<bio.h>intBgetc(Biobufhdr *bp){	int i;loop:	i = bp->icount;	if(i != 0) {		bp->icount = i+1;		return bp->ebuf[i];	}	if(bp->state != Bractive) {		if(bp->state == Bracteof)			bp->state = Bractive;		return Beof;	}	/*	 * get next buffer, try to keep Bungetsize	 * characters pre-catenated from the previous	 * buffer to allow that many ungets.	 */	memmove(bp->bbuf-Bungetsize, bp->ebuf-Bungetsize, Bungetsize);	i = read(bp->fid, bp->bbuf, bp->bsize);	bp->gbuf = bp->bbuf;	if(i <= 0) {		bp->state = Bracteof;		if(i < 0)			bp->state = Binactive;		return Beof;	}	if(i < bp->bsize) {		memmove(bp->ebuf-i-Bungetsize, bp->bbuf-Bungetsize, i+Bungetsize);		bp->gbuf = bp->ebuf-i;	}	bp->icount = -i;	bp->offset += i;	goto loop;}intBungetc(Biobufhdr *bp){	if(bp->state == Bracteof)		bp->state = Bractive;	if(bp->state != Bractive)		return Beof;	bp->icount--;	return 1;}

⌨️ 快捷键说明

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