7 #define GET8(x) {x = *p++;}
8 #define GET16(x) {x = *p++; x |= *p++ << 8;}
9 #define GET24(x) {x = *p++; x |= *p++ << 8; x |= *p++ << 16;}
10 #define GET32(x) {x = *p++; x |= *p++ << 8; x |= *p++ << 16; x |= *p++ << 24;}
13 x |= (uvlong) *p++ << 8; \
14 x |= (uvlong) *p++ << 16; \
15 x |= (uvlong) *p++ << 24; \
16 x |= (uvlong) *p++ << 32; \
17 x |= (uvlong) *p++ << 40; \
18 x |= (uvlong) *p++ << 48; \
19 x |= (uvlong) *p++ << 56;}
20 #define GETS(x, n) {memcpy(x, p, n); p += n;}
22 #define PUT8(x) {*p++ = x;}
23 #define PUT16(x) {*p++ = x; *p++ = x >> 8;}
24 #define PUT24(x) {*p++ = x; *p++ = x >> 8; *p++ = x >> 16;}
25 #define PUT32(x) {*p++ = x; *p++ = x >> 8; *p++ = x >> 16; *p++ = x >> 24;}
35 #define PUTS(x, n) {memcpy(p, x, n); p += n;}
38 unpack(Buf *b, uchar *p)
43 switch(b->type = *p++){
45 memcpy(b->data, p, RBLOCK);
56 for(d = b->de; d < &b->de[DEPERBLK]; d++){
57 GETS(d->name, NAMELEN);
66 for(i = 0; i < NDIRECT; i++)
68 for(i = 0; i < NINDIRECT; i++)
75 for(i = 0; i < OFFPERBLK; i++)
79 for(i = 0; i < REFPERBLK; i++)
87 pack(Buf *b, uchar *p)
92 switch(*p++ = b->type){
94 memcpy(p, b->data, RBLOCK);
103 PUT64(b->sb.qidpath);
106 for(d = b->de; d < b->de + nelem(b->de); d++){
107 PUTS(d->name, NAMELEN);
116 for(i = 0; i < NDIRECT; i++)
118 for(i = 0; i < NINDIRECT; i++)
125 for(i = 0; i < OFFPERBLK; i++)
129 for(i = 0; i < REFPERBLK; i++)