Blame


1 64f7506b 2006-02-24 devnull #define getpass tapefs_getpass
2 64f7506b 2006-02-24 devnull
3 64f7506b 2006-02-24 devnull #define g2byte(x) (((x)[1]<<8) + (x)[0]) /* little-endian */
4 64f7506b 2006-02-24 devnull #define g3byte(x) (((x)[2]<<16) + ((x)[1]<<8) + (x)[0])
5 64f7506b 2006-02-24 devnull #define g4byte(x) (((x)[3]<<24) + ((x)[2]<<16) + ((x)[1]<<8) + (x)[0])
6 64f7506b 2006-02-24 devnull
7 38c7eb9b 2006-05-21 devnull /* big endian */
8 38c7eb9b 2006-05-21 devnull #define b4byte(x) (((x)[0]<<24) + ((x)[1]<<16) + ((x)[2]<<8) + (x)[3])
9 38c7eb9b 2006-05-21 devnull #define b8byte(x) (((vlong)b4byte(x)<<32) | (u32int)b4byte((x)+4))
10 38c7eb9b 2006-05-21 devnull
11 64f7506b 2006-02-24 devnull enum
12 64f7506b 2006-02-24 devnull {
13 64f7506b 2006-02-24 devnull OPERM = 0x3, /* mask of all permission types in open mode */
14 64f7506b 2006-02-24 devnull Nram = 512,
15 cbeb0b26 2006-04-01 devnull Maxbuf = 8192 /* max buffer size */
16 64f7506b 2006-02-24 devnull };
17 64f7506b 2006-02-24 devnull
18 64f7506b 2006-02-24 devnull typedef struct Fid Fid;
19 64f7506b 2006-02-24 devnull typedef struct Ram Ram;
20 64f7506b 2006-02-24 devnull
21 64f7506b 2006-02-24 devnull struct Fid
22 64f7506b 2006-02-24 devnull {
23 64f7506b 2006-02-24 devnull short busy;
24 64f7506b 2006-02-24 devnull short open;
25 64f7506b 2006-02-24 devnull short rclose;
26 64f7506b 2006-02-24 devnull int fid;
27 64f7506b 2006-02-24 devnull Fid *next;
28 64f7506b 2006-02-24 devnull char *user;
29 64f7506b 2006-02-24 devnull Ram *ram;
30 64f7506b 2006-02-24 devnull };
31 64f7506b 2006-02-24 devnull
32 64f7506b 2006-02-24 devnull struct Ram
33 64f7506b 2006-02-24 devnull {
34 64f7506b 2006-02-24 devnull char busy;
35 64f7506b 2006-02-24 devnull char open;
36 64f7506b 2006-02-24 devnull char replete;
37 64f7506b 2006-02-24 devnull Ram *parent; /* parent directory */
38 64f7506b 2006-02-24 devnull Ram *child; /* first member of directory */
39 64f7506b 2006-02-24 devnull Ram *next; /* next member of file's directory */
40 64f7506b 2006-02-24 devnull Qid qid;
41 64f7506b 2006-02-24 devnull long perm;
42 64f7506b 2006-02-24 devnull char *name;
43 64f7506b 2006-02-24 devnull ulong atime;
44 64f7506b 2006-02-24 devnull ulong mtime;
45 64f7506b 2006-02-24 devnull char *user;
46 64f7506b 2006-02-24 devnull char *group;
47 64f7506b 2006-02-24 devnull vlong addr;
48 64f7506b 2006-02-24 devnull void *data;
49 58ecf387 2006-02-25 devnull vlong ndata;
50 64f7506b 2006-02-24 devnull };
51 64f7506b 2006-02-24 devnull
52 64f7506b 2006-02-24 devnull enum
53 64f7506b 2006-02-24 devnull {
54 64f7506b 2006-02-24 devnull Pexec = 1,
55 64f7506b 2006-02-24 devnull Pwrite = 2,
56 64f7506b 2006-02-24 devnull Pread = 4,
57 64f7506b 2006-02-24 devnull Pother = 1,
58 64f7506b 2006-02-24 devnull Pgroup = 8,
59 cbeb0b26 2006-04-01 devnull Powner = 64
60 64f7506b 2006-02-24 devnull };
61 64f7506b 2006-02-24 devnull
62 64f7506b 2006-02-24 devnull typedef struct idmap {
63 64f7506b 2006-02-24 devnull char *name;
64 64f7506b 2006-02-24 devnull int id;
65 64f7506b 2006-02-24 devnull } Idmap;
66 64f7506b 2006-02-24 devnull
67 64f7506b 2006-02-24 devnull typedef struct fileinf {
68 64f7506b 2006-02-24 devnull char *name;
69 64f7506b 2006-02-24 devnull vlong addr;
70 64f7506b 2006-02-24 devnull void *data;
71 64f7506b 2006-02-24 devnull vlong size;
72 64f7506b 2006-02-24 devnull int mode;
73 64f7506b 2006-02-24 devnull int uid;
74 64f7506b 2006-02-24 devnull int gid;
75 64f7506b 2006-02-24 devnull long mdate;
76 64f7506b 2006-02-24 devnull } Fileinf;
77 64f7506b 2006-02-24 devnull
78 64f7506b 2006-02-24 devnull extern ulong path; /* incremented for each new file */
79 64f7506b 2006-02-24 devnull extern Ram *ram;
80 64f7506b 2006-02-24 devnull extern char *user;
81 64f7506b 2006-02-24 devnull extern Idmap *uidmap;
82 64f7506b 2006-02-24 devnull extern Idmap *gidmap;
83 64f7506b 2006-02-24 devnull extern int replete;
84 38c7eb9b 2006-05-21 devnull extern int blocksize;
85 64f7506b 2006-02-24 devnull void error(char*);
86 64f7506b 2006-02-24 devnull void *erealloc(void*, ulong);
87 64f7506b 2006-02-24 devnull void *emalloc(ulong);
88 64f7506b 2006-02-24 devnull char *estrdup(char*);
89 64f7506b 2006-02-24 devnull void populate(char *);
90 64f7506b 2006-02-24 devnull void dotrunc(Ram*);
91 64f7506b 2006-02-24 devnull void docreate(Ram*);
92 64f7506b 2006-02-24 devnull char *doread(Ram*, vlong, long);
93 64f7506b 2006-02-24 devnull void dowrite(Ram*, char*, long, long);
94 64f7506b 2006-02-24 devnull int dopermw(Ram*);
95 64f7506b 2006-02-24 devnull Idmap *getpass(char*);
96 64f7506b 2006-02-24 devnull char *mapid(Idmap*,int);
97 64f7506b 2006-02-24 devnull Ram *poppath(Fileinf fi, int new);
98 64f7506b 2006-02-24 devnull Ram *popfile(Ram *dir, Fileinf fi);
99 64f7506b 2006-02-24 devnull void popdir(Ram*);
100 64f7506b 2006-02-24 devnull Ram *lookup(Ram*, char*);