📄 tapefs.h
字号:
#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])/* big endian */#define b4byte(x) (((x)[0]<<24) + ((x)[1]<<16) + ((x)[2]<<8) + (x)[3])#define b8byte(x) (((vlong)b4byte(x)<<32) | (u32int)b4byte((x)+4))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; vlong 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;extern int blocksize;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*);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -