aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/tapefs/tapefs.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/tapefs/tapefs.h')
-rw-r--r--src/cmd/tapefs/tapefs.h95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/cmd/tapefs/tapefs.h b/src/cmd/tapefs/tapefs.h
new file mode 100644
index 00000000..ae5e1844
--- /dev/null
+++ b/src/cmd/tapefs/tapefs.h
@@ -0,0 +1,95 @@
+#define getpass tapefs_getpass
+
+#define g2byte(x) (((x)[1]<<8) + (x)[0]) /* little-endian */
+#define g3byte(x) (((x)[2]<<16) + ((x)[1]<<8) + (x)[0])
+#define g4byte(x) (((x)[3]<<24) + ((x)[2]<<16) + ((x)[1]<<8) + (x)[0])
+
+enum
+{
+ OPERM = 0x3, /* mask of all permission types in open mode */
+ Nram = 512,
+ Maxbuf = 8192, /* max buffer size */
+};
+
+typedef struct Fid Fid;
+typedef struct Ram Ram;
+
+struct Fid
+{
+ short busy;
+ short open;
+ short rclose;
+ int fid;
+ Fid *next;
+ char *user;
+ Ram *ram;
+};
+
+struct Ram
+{
+ char busy;
+ char open;
+ char replete;
+ Ram *parent; /* parent directory */
+ Ram *child; /* first member of directory */
+ Ram *next; /* next member of file's directory */
+ Qid qid;
+ long perm;
+ char *name;
+ ulong atime;
+ ulong mtime;
+ char *user;
+ char *group;
+ vlong addr;
+ void *data;
+ long ndata;
+};
+
+enum
+{
+ Pexec = 1,
+ Pwrite = 2,
+ Pread = 4,
+ Pother = 1,
+ Pgroup = 8,
+ Powner = 64,
+};
+
+typedef struct idmap {
+ char *name;
+ int id;
+} Idmap;
+
+typedef struct fileinf {
+ char *name;
+ vlong addr;
+ void *data;
+ vlong size;
+ int mode;
+ int uid;
+ int gid;
+ long mdate;
+} Fileinf;
+
+extern ulong path; /* incremented for each new file */
+extern Ram *ram;
+extern char *user;
+extern Idmap *uidmap;
+extern Idmap *gidmap;
+extern int replete;
+void error(char*);
+void *erealloc(void*, ulong);
+void *emalloc(ulong);
+char *estrdup(char*);
+void populate(char *);
+void dotrunc(Ram*);
+void docreate(Ram*);
+char *doread(Ram*, vlong, long);
+void dowrite(Ram*, char*, long, long);
+int dopermw(Ram*);
+Idmap *getpass(char*);
+char *mapid(Idmap*,int);
+Ram *poppath(Fileinf fi, int new);
+Ram *popfile(Ram *dir, Fileinf fi);
+void popdir(Ram*);
+Ram *lookup(Ram*, char*);