|
|
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.