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

📄 convm2d.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include "lib.h"#include <string.h>#include "sys9.h"#include "dir.h"#define nil ((void*)0)static char nullstring[] = "";uint_convM2D(uchar *buf, uint nbuf, Dir *d, char *strs){	uchar *p, *ebuf;	char *sv[4];	int i, ns, nsv[4];	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){			nsv[i] = ns;			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 + -