1 64f7506b 2006-02-24 devnull #define getpass tapefs_getpass
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 58ecf387 2006-02-25 devnull #define g8byte(x) (((vlong)g4byte(x)<<32) | (u32int)g4byte(x+4))
10 64f7506b 2006-02-24 devnull OPERM = 0x3, /* mask of all permission types in open mode */
11 64f7506b 2006-02-24 devnull Nram = 512,
12 64f7506b 2006-02-24 devnull Maxbuf = 8192, /* max buffer size */
15 64f7506b 2006-02-24 devnull typedef struct Fid Fid;
16 64f7506b 2006-02-24 devnull typedef struct Ram Ram;
18 64f7506b 2006-02-24 devnull struct Fid
20 64f7506b 2006-02-24 devnull short busy;
21 64f7506b 2006-02-24 devnull short open;
22 64f7506b 2006-02-24 devnull short rclose;
24 64f7506b 2006-02-24 devnull Fid *next;
25 64f7506b 2006-02-24 devnull char *user;
26 64f7506b 2006-02-24 devnull Ram *ram;
29 64f7506b 2006-02-24 devnull struct Ram
31 64f7506b 2006-02-24 devnull char busy;
32 64f7506b 2006-02-24 devnull char open;
33 64f7506b 2006-02-24 devnull char replete;
34 64f7506b 2006-02-24 devnull Ram *parent; /* parent directory */
35 64f7506b 2006-02-24 devnull Ram *child; /* first member of directory */
36 64f7506b 2006-02-24 devnull Ram *next; /* next member of file's directory */
38 64f7506b 2006-02-24 devnull long perm;
39 64f7506b 2006-02-24 devnull char *name;
40 64f7506b 2006-02-24 devnull ulong atime;
41 64f7506b 2006-02-24 devnull ulong mtime;
42 64f7506b 2006-02-24 devnull char *user;
43 64f7506b 2006-02-24 devnull char *group;
44 64f7506b 2006-02-24 devnull vlong addr;
45 64f7506b 2006-02-24 devnull void *data;
46 58ecf387 2006-02-25 devnull vlong ndata;
51 64f7506b 2006-02-24 devnull Pexec = 1,
52 64f7506b 2006-02-24 devnull Pwrite = 2,
53 64f7506b 2006-02-24 devnull Pread = 4,
54 64f7506b 2006-02-24 devnull Pother = 1,
55 64f7506b 2006-02-24 devnull Pgroup = 8,
56 64f7506b 2006-02-24 devnull Powner = 64,
59 64f7506b 2006-02-24 devnull typedef struct idmap {
60 64f7506b 2006-02-24 devnull char *name;
64 64f7506b 2006-02-24 devnull typedef struct fileinf {
65 64f7506b 2006-02-24 devnull char *name;
66 64f7506b 2006-02-24 devnull vlong addr;
67 64f7506b 2006-02-24 devnull void *data;
68 64f7506b 2006-02-24 devnull vlong size;
69 64f7506b 2006-02-24 devnull int mode;
72 64f7506b 2006-02-24 devnull long mdate;
73 64f7506b 2006-02-24 devnull } Fileinf;
75 64f7506b 2006-02-24 devnull extern ulong path; /* incremented for each new file */
76 64f7506b 2006-02-24 devnull extern Ram *ram;
77 64f7506b 2006-02-24 devnull extern char *user;
78 64f7506b 2006-02-24 devnull extern Idmap *uidmap;
79 64f7506b 2006-02-24 devnull extern Idmap *gidmap;
80 64f7506b 2006-02-24 devnull extern int replete;
81 64f7506b 2006-02-24 devnull void error(char*);
82 64f7506b 2006-02-24 devnull void *erealloc(void*, ulong);
83 64f7506b 2006-02-24 devnull void *emalloc(ulong);
84 64f7506b 2006-02-24 devnull char *estrdup(char*);
85 64f7506b 2006-02-24 devnull void populate(char *);
86 64f7506b 2006-02-24 devnull void dotrunc(Ram*);
87 64f7506b 2006-02-24 devnull void docreate(Ram*);
88 64f7506b 2006-02-24 devnull char *doread(Ram*, vlong, long);
89 64f7506b 2006-02-24 devnull void dowrite(Ram*, char*, long, long);
90 64f7506b 2006-02-24 devnull int dopermw(Ram*);
91 64f7506b 2006-02-24 devnull Idmap *getpass(char*);
92 64f7506b 2006-02-24 devnull char *mapid(Idmap*,int);
93 64f7506b 2006-02-24 devnull Ram *poppath(Fileinf fi, int new);
94 64f7506b 2006-02-24 devnull Ram *popfile(Ram *dir, Fileinf fi);
95 64f7506b 2006-02-24 devnull void popdir(Ram*);
96 64f7506b 2006-02-24 devnull Ram *lookup(Ram*, char*);