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

📄 bseek.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include	<u.h>#include	<libc.h>#include	<bio.h>vlongBseek(Biobufhdr *bp, vlong offset, int base){	vlong n, d;	switch(bp->state) {	default:		fprint(2, "Bseek: unknown state %d\n", bp->state);		return Beof;	case Bracteof:		bp->state = Bractive;		bp->icount = 0;		bp->gbuf = bp->ebuf;	case Bractive:		n = offset;		if(base == 1) {			n += Boffset(bp);			base = 0;		}		/*		 * try to seek within buffer		 */		if(base == 0) {			d = n - Boffset(bp);			bp->icount += d;			if(d >= 0) {				if(bp->icount <= 0)					return n;			} else {				if(bp->ebuf - bp->gbuf >= -bp->icount)					return n;			}		}		/*		 * reset the buffer		 */		n = seek(bp->fid, n, base);		bp->icount = 0;		bp->gbuf = bp->ebuf;		break;	case Bwactive:		Bflush(bp);		n = seek(bp->fid, offset, base);		break;	}	bp->offset = n;	return n;}

⌨️ 快捷键说明

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