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

📄 convm2d.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include	<plan9.h>#include	<fcall.h>intstatcheck(uchar *buf, uint nbuf){	uchar *ebuf;	int i;	ebuf = buf + nbuf;	buf += STATFIXLEN - 4 * BIT16SZ;	for(i = 0; i < 4; i++){		if(buf + BIT16SZ > ebuf)			return -1;		buf += BIT16SZ + GBIT16(buf);	}	if(buf != ebuf)		return -1;	return 0;}static char nullstring[] = "";uintconvM2D(uchar *buf, uint nbuf, Dir *d, char *strs){	uchar *p, *ebuf;	char *sv[4];	int i, ns;	p = buf;	ebuf = buf + nbuf;	p += BIT16SZ;	/* ignore size */	d->type = GBIT16(p);	p += BIT16SZ;	d->dev = GBIT32(p);	p += BIT32SZ;	d->qid.type = GBIT8(p);	p += BIT8SZ;	d->qid.vers = GBIT32(p);	p += BIT32SZ;	d->qid.path = GBIT64(p);	p += BIT64SZ;	d->mode = GBIT32(p);	p += BIT32SZ;	d->atime = GBIT32(p);	p += BIT32SZ;	d->mtime = GBIT32(p);	p += BIT32SZ;	d->length = GBIT64(p);	p += BIT64SZ;	d->name = nil;	d->uid = nil;	d->gid = nil;	d->muid = nil;	for(i = 0; i < 4; i++){		if(p + BIT16SZ > ebuf)			return 0;		ns = GBIT16(p);		p += BIT16SZ;		if(p + ns > ebuf)			return 0;		if(strs){			sv[i] = strs;			memmove(strs, p, ns);			strs += ns;			*strs++ = '\0';		}		p += ns;	}	if(strs){		d->name = sv[0];		d->uid = sv[1];		d->gid = sv[2];		d->muid = sv[3];	}else{		d->name = nullstring;		d->uid = nullstring;		d->gid = nullstring;		d->muid = nullstring;	}		return p - buf;}

⌨️ 快捷键说明

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