Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – planix.SVN – Blame – /os/branches/feature_posix/sys/src/ape/lib/ap/plan9/convD2M.c – Rev 2

Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include "lib.h"
2
#include <string.h>
3
#include "sys9.h"
4
#include "dir.h"
5
 
6
uint
7
_convD2M(Dir *d, uchar *buf, uint nbuf)
8
{
9
	uchar *p, *ebuf;
10
	char *sv[4];
11
	int i, ns, nsv[4], ss;
12
 
13
	if(nbuf < BIT16SZ)
14
		return 0;
15
 
16
	p = buf;
17
	ebuf = buf + nbuf;
18
 
19
	sv[0] = d->name;
20
	sv[1] = d->uid;
21
	sv[2] = d->gid;
22
	sv[3] = d->muid;
23
 
24
	ns = 0;
25
	for(i = 0; i < 4; i++){
26
		nsv[i] = strlen(sv[i]);
27
		ns += nsv[i];
28
	}
29
 
30
	ss = STATFIXLEN + ns;
31
 
32
	/* set size befor erroring, so user can know how much is needed */
33
	/* note that length excludes count field itself */
34
	PBIT16(p, ss-BIT16SZ);
35
	p += BIT16SZ;
36
 
37
	if(ss > nbuf)
38
		return BIT16SZ;
39
 
40
	PBIT16(p, d->type);
41
	p += BIT16SZ;
42
	PBIT32(p, d->dev);
43
	p += BIT32SZ;
44
	PBIT8(p, d->qid.type);
45
	p += BIT8SZ;
46
	PBIT32(p, d->qid.vers);
47
	p += BIT32SZ;
48
	PBIT64(p, d->qid.path);
49
	p += BIT64SZ;
50
	PBIT32(p, d->mode);
51
	p += BIT32SZ;
52
	PBIT32(p, d->atime);
53
	p += BIT32SZ;
54
	PBIT32(p, d->mtime);
55
	p += BIT32SZ;
56
	PBIT64(p, d->length);
57
	p += BIT64SZ;
58
 
59
	for(i = 0; i < 4; i++){
60
		ns = nsv[i];
61
		if(p + ns + BIT16SZ > ebuf)
62
			return 0;
63
		PBIT16(p, ns);
64
		p += BIT16SZ;
65
		memmove(p, sv[i], ns);
66
		p += ns;
67
	}
68
 
69
	if(ss != p - buf)
70
		return 0;
71
 
72
	return p - buf;
73
}
74
 
75
uint
76
_sizeD2M(Dir *d)
77
{
78
	char *sv[4];
79
	int i, ns;
80
 
81
	sv[0] = d->name;
82
	sv[1] = d->uid;
83
	sv[2] = d->gid;
84
	sv[3] = d->muid;
85
 
86
	ns = 0;
87
	for(i = 0; i < 4; i++)
88
		if(sv[i])
89
			ns += strlen(sv[i]);
90
 
91
	return STATFIXLEN + ns;
92
}
93