1*3e12c5d1SDavid du Colombier #include "lib.h"
2*3e12c5d1SDavid du Colombier #include <string.h>
3*3e12c5d1SDavid du Colombier #include "sys9.h"
4*3e12c5d1SDavid du Colombier #include "dir.h"
5*3e12c5d1SDavid du Colombier
6*3e12c5d1SDavid du Colombier #define CHAR(x) *p++ = f->x
7*3e12c5d1SDavid du Colombier #define SHORT(x) p[0] = f->x; p[1] = f->x>>8; p += 2
8*3e12c5d1SDavid du Colombier #define LONG(x) p[0] = f->x; p[1] = f->x>>8; p[2] = f->x>>16; p[3] = f->x>>24; p += 4
9*3e12c5d1SDavid du Colombier #define VLONG(x) p[0] = f->x; p[1] = f->x>>8; p[2] = f->x>>16; p[3] = f->x>>24;\
10*3e12c5d1SDavid du Colombier p[4] = 0; p[5] = 0; p[6] = 0; p[7] = 0; p += 8
11*3e12c5d1SDavid du Colombier #define STRING(x,n) memcpy(p, f->x, n); p += n
12*3e12c5d1SDavid du Colombier
13*3e12c5d1SDavid du Colombier int
convD2M(Dir * f,char * ap)14*3e12c5d1SDavid du Colombier convD2M(Dir *f, char *ap)
15*3e12c5d1SDavid du Colombier {
16*3e12c5d1SDavid du Colombier unsigned char *p;
17*3e12c5d1SDavid du Colombier
18*3e12c5d1SDavid du Colombier p = (unsigned char*)ap;
19*3e12c5d1SDavid du Colombier STRING(name, sizeof(f->name));
20*3e12c5d1SDavid du Colombier STRING(uid, sizeof(f->uid));
21*3e12c5d1SDavid du Colombier STRING(gid, sizeof(f->gid));
22*3e12c5d1SDavid du Colombier LONG(qid.path);
23*3e12c5d1SDavid du Colombier LONG(qid.vers);
24*3e12c5d1SDavid du Colombier LONG(mode);
25*3e12c5d1SDavid du Colombier LONG(atime);
26*3e12c5d1SDavid du Colombier LONG(mtime);
27*3e12c5d1SDavid du Colombier VLONG(length);
28*3e12c5d1SDavid du Colombier SHORT(type);
29*3e12c5d1SDavid du Colombier SHORT(dev);
30*3e12c5d1SDavid du Colombier return p - (unsigned char*)ap;
31*3e12c5d1SDavid du Colombier }
32*3e12c5d1SDavid du Colombier
33*3e12c5d1SDavid du Colombier #undef CHAR
34*3e12c5d1SDavid du Colombier #undef SHORT
35*3e12c5d1SDavid du Colombier #undef LONG
36*3e12c5d1SDavid du Colombier #undef VLONG
37*3e12c5d1SDavid du Colombier #undef STRING
38*3e12c5d1SDavid du Colombier
39*3e12c5d1SDavid du Colombier #define CHAR(x) f->x = *p++
40*3e12c5d1SDavid du Colombier #define SHORT(x) f->x = (p[0] | (p[1]<<8)); p += 2
41*3e12c5d1SDavid du Colombier #define LONG(x) f->x = (p[0] | (p[1]<<8) |\
42*3e12c5d1SDavid du Colombier (p[2]<<16) | (p[3]<<24)); p += 4
43*3e12c5d1SDavid du Colombier #define VLONG(x) f->x = (p[0] | (p[1]<<8) |\
44*3e12c5d1SDavid du Colombier (p[2]<<16) | (p[3]<<24)); p += 8
45*3e12c5d1SDavid du Colombier #define STRING(x,n) memcpy(f->x, p, n); p += n
46*3e12c5d1SDavid du Colombier
47*3e12c5d1SDavid du Colombier int
convM2D(char * ap,Dir * f)48*3e12c5d1SDavid du Colombier convM2D(char *ap, Dir *f)
49*3e12c5d1SDavid du Colombier {
50*3e12c5d1SDavid du Colombier unsigned char *p;
51*3e12c5d1SDavid du Colombier
52*3e12c5d1SDavid du Colombier p = (unsigned char*)ap;
53*3e12c5d1SDavid du Colombier STRING(name, sizeof(f->name));
54*3e12c5d1SDavid du Colombier STRING(uid, sizeof(f->uid));
55*3e12c5d1SDavid du Colombier STRING(gid, sizeof(f->gid));
56*3e12c5d1SDavid du Colombier LONG(qid.path);
57*3e12c5d1SDavid du Colombier LONG(qid.vers);
58*3e12c5d1SDavid du Colombier LONG(mode);
59*3e12c5d1SDavid du Colombier LONG(atime);
60*3e12c5d1SDavid du Colombier LONG(mtime);
61*3e12c5d1SDavid du Colombier VLONG(length);
62*3e12c5d1SDavid du Colombier SHORT(type);
63*3e12c5d1SDavid du Colombier SHORT(dev);
64*3e12c5d1SDavid du Colombier return p - (unsigned char*)ap;
65*3e12c5d1SDavid du Colombier }
66