dirread.c

来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 41 行

C
41
字号
#include <u.h>#include <libc.h>#include <auth.h>#include <fcall.h>#include <thread.h>#include <9p.h>voiddirread9p(Req *r, Dirgen *gen, void *aux){	int start;	uchar *p, *ep;	uint rv;	Dir d;	if(r->ifcall.offset == 0)		start = 0;	else		start = r->fid->dirindex;	p = (uchar*)r->ofcall.data;	ep = p+r->ifcall.count;	while(p < ep){		memset(&d, 0, sizeof d);		if((*gen)(start, &d, aux) < 0)			break;		rv = convD2M(&d, p, ep-p);		free(d.name);		free(d.muid);		free(d.uid);		free(d.gid);		if(rv <= BIT16SZ)			break;		p += rv;		start++;	}	r->fid->dirindex = start;	r->ofcall.count = p - (uchar*)r->ofcall.data;}

⌨️ 快捷键说明

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