Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <u.h>
2
#include <libc.h>
3
#include <auth.h>
4
#include <fcall.h>
5
#include <thread.h>
6
#include <9p.h>
7
 
8
void
9
dirread9p(Req *r, Dirgen *gen, void *aux)
10
{
11
	int start;
12
	uchar *p, *ep;
13
	uint rv;
14
	Dir d;
15
 
16
	if(r->ifcall.offset == 0)
17
		start = 0;
18
	else
19
		start = r->fid->dirindex;
20
 
21
	p = (uchar*)r->ofcall.data;
22
	ep = p+r->ifcall.count;
23
 
24
	while(p < ep){
25
		memset(&d, 0, sizeof d);
26
		if((*gen)(start, &d, aux) < 0)
27
			break;
28
		rv = convD2M(&d, p, ep-p);
29
		free(d.name);
30
		free(d.muid);
31
		free(d.uid);
32
		free(d.gid);
33
		if(rv <= BIT16SZ)
34
			break;
35
		p += rv;
36
		start++;
37
	}
38
	r->fid->dirindex = start;
39
	r->ofcall.count = p - (uchar*)r->ofcall.data;
40
}