|
|
1.1 root 1: /*
2: * protocol for talking to the face server
3: * defined as lengths and offsets for machine independence
4: *
5: * multiple byte quantites are stored little endian:
6: * least significant byte in byte 0,
7: * next least in byte 1,
8: * and so on
9: */
10:
11: #define frfshort(p, off) ((p)[(off)+0]+((p)[(off)+1]<<8))
12: #define frflong(p, off) ((p)[(off)+0]+((p)[(off)+1]<<8)+((p)[(off)+2]<<16)+((p)[(off)+3]<<24))
13: #define tofshort(p, off, n) ((p)[(off)+0]=n, (p)[(off)+1]=((n)>>8))
14: #define toflong(p, off, n) ((p)[(off)+0]=n, (p)[(off)+1]=((n)>>8),\
15: (p)[(off)+2]=((n)>>16), (p)[(off)+3]=((n)>>24))
16:
17: #define F_TYPE 0 /* one byte: message type */
18: /* one byte of pad */
19: #define F_LEN 2 /* two bytes: length of accompanying data */
20: #define F_P1 4 /* four bytes: first parameter */
21: #define F_P2 8 /* four bytes: second parameter */
22:
23: #define F_DATA 12 /* associated data, if any */
24:
25: /*
26: * type codes
27: */
28: #define DOSTAT 1
29: #define DOREAD 2
30:
31: /*
32: * for DOSTAT, associated data returned
33: * is a representation of struct stat
34: * it was first defined on a VAX,
35: * so here, too, integers are little-endian
36: */
37:
38: #define ST_DEV 0 /* (2) */
39: #define ST_INO 2 /* (2) */
40: #define ST_MODE 4 /* (2) */
41: #define ST_NLINK 6 /* (2) */
42: #define ST_UID 8 /* (2) */
43: #define ST_GID 10 /* (2) */
44: #define ST_RDEV 12 /* (2) */
45: /* two bytes of padding */
46: #define ST_SIZE 16 /* (4) */
47: #define ST_ATIME 20 /* (4) */
48: #define ST_MTIME 24 /* (4) */
49: #define ST_CTIME 28 /* (4) */
50: #define STLEN 32 /* sizeof(struct stat) */
51:
52: #define STFMT 0170000 /* ST_MODE: type of file */
53: #define STDIR 0040000 /* .. directory */
54:
55: #define FMAXPATH 128 /* max length of pathname */
56: #define FMAXDATA 4096 /* max data read at once */
57:
58: #define FROOT 2 /* i-number of root directory */
59:
60: /*
61: * directories
62: */
63: #define FD_INO 0 /* (2 bytes) */
64: #define FD_NAME 2
65: #define FDLEN 16
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.