dirread.c

来自「著名操作系统Plan 9的第三版的部分核心源代码。现在很难找到了。Plan 9是」· C语言 代码 · 共 42 行

C
42
字号
#include <u.h>#include <libc.h>#include <auth.h>#include <fcall.h>#define	N	50#define	SZ	(N*DIRLEN)longdirread(int f, Dir *dbuf, long count){	char *buf;	int c, n, i, r;	n = 0;	buf = malloc(SZ);	if(buf == nil)		return -1;	count = (count/sizeof(Dir)) * DIRLEN;	while(n < count) {		c = count - n;		if(c > SZ)			c = SZ;		r = read(f, buf, c);		if(r == 0)			break;		if(r < 0 || r % DIRLEN) {			free(buf);			return -1;		}		for(i=0; i<r; i+=DIRLEN) {			convM2D(buf+i, dbuf);			dbuf++;		}		n += r;		if(r != c)			break;	}	free(buf);	return (n/DIRLEN) * sizeof(Dir);}

⌨️ 快捷键说明

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