📄 9.h
字号:
#include <auth.h>#include <fcall.h>enum { NFidHash = 503,};typedef struct Con Con;typedef struct DirBuf DirBuf;typedef struct Excl Excl;typedef struct Fid Fid;typedef struct Fsys Fsys;typedef struct Msg Msg;#pragma incomplete DirBuf#pragma incomplete Excl#pragma incomplete Fsysstruct Msg { uchar* data; u32int msize; /* actual size of data */ Fcall t; Fcall r; Con* con; Msg* anext; /* allocation free list */ Msg* mnext; /* all active messsages on this Con */ Msg* mprev; int state; /* */ Msg* flush; /* flushes waiting for this Msg */ Msg* rwnext; /* read/write queue */ int nowq; /* do not place on write queue */};enum { MsgN = 0, MsgR = 1, Msg9 = 2, MsgW = 3, MsgF = 4,};enum { ConNoneAllow = 1<<0, ConNoAuthCheck = 1<<1, ConNoPermCheck = 1<<2, ConWstatAllow = 1<<3, ConIPCheck = 1<<4,};struct Con { char* name; uchar* data; /* max, not negotiated */ int isconsole; /* immutable */ int flags; /* immutable */ char remote[128]; /* immutable */ VtLock* lock; int state; int fd; Msg* version; u32int msize; /* negotiated with Tversion */ VtRendez* rendez; Con* anext; /* alloc */ Con* cnext; /* in use */ Con* cprev; VtLock* alock; int aok; /* authentication done */ VtLock* mlock; Msg* mhead; /* all Msgs on this connection */ Msg* mtail; VtRendez* mrendez; VtLock* wlock; Msg* whead; /* write queue */ Msg* wtail; VtRendez* wrendez; VtLock* fidlock; /* */ Fid* fidhash[NFidHash]; Fid* fhead; Fid* ftail; int nfid;};enum { ConDead = 0, ConNew = 1, ConDown = 2, ConInit = 3, ConUp = 4, ConMoribund = 5,};struct Fid { VtLock* lock; Con* con; u32int fidno; int ref; /* inc/dec under Con.fidlock */ int flags; int open; Fsys* fsys; File* file; Qid qid; char* uid; char* uname; DirBuf* db; Excl* excl; VtLock* alock; /* Tauth/Tattach */ AuthRpc* rpc; char* cuname; Fid* sort; /* sorted by uname in cmdWho */ Fid* hash; /* lookup by fidno */ Fid* next; /* clunk session with Tversion */ Fid* prev;};enum { /* Fid.flags and fidGet(..., flags) */ FidFCreate = 0x01, FidFWlock = 0x02,};enum { /* Fid.open */ FidOCreate = 0x01, FidORead = 0x02, FidOWrite = 0x04, FidORclose = 0x08,};/* * 9p.c */extern int (*rFcall[Tmax])(Msg*);extern int validFileName(char*);/* * 9auth.c */extern int authCheck(Fcall*, Fid*, Fsys*);extern int authRead(Fid*, void*, int);extern int authWrite(Fid*, void*, int);/* * 9dir.c */extern void dirBufFree(DirBuf*);extern int dirDe2M(DirEntry*, uchar*, int);extern int dirRead(Fid*, uchar*, int, vlong);/* * 9excl.c */extern int exclAlloc(Fid*);extern void exclFree(Fid*);extern void exclInit(void);extern int exclUpdate(Fid*);/* * 9fid.c */extern void fidClunk(Fid*);extern void fidClunkAll(Con*);extern Fid* fidGet(Con*, u32int, int);extern void fidInit(void);extern void fidPut(Fid*);/* * 9fsys.c */extern void fsysFsRlock(Fsys*);extern void fsysFsRUnlock(Fsys*);extern Fs* fsysGetFs(Fsys*);extern Fsys* fsysGet(char*);extern char* fsysGetName(Fsys*);extern File* fsysGetRoot(Fsys*, char*);extern Fsys* fsysIncRef(Fsys*);extern int fsysInit(void);extern int fsysNoAuthCheck(Fsys*);extern int fsysNoPermCheck(Fsys*);extern void fsysPut(Fsys*);extern int fsysWstatAllow(Fsys*);/* * 9lstn.c */extern int lstnInit(void);/* * 9proc.c */extern Con* conAlloc(int, char*, int);extern void conInit(void);extern void msgFlush(Msg*);extern void msgInit(void);/* * 9srv.c */extern int srvInit(void);/* * 9user.c */extern int groupLeader(char*, char*);extern int groupMember(char*, char*);extern int groupWriteMember(char*);extern char* unameByUid(char*);extern char* uidByUname(char*);extern int usersInit(void);extern int usersFileRead(char*);extern int validUserName(char*);extern char* uidadm;extern char* unamenone;extern char* uidnoworld;/* * Ccli.c */extern int cliAddCmd(char*, int (*)(int, char*[]));extern int cliError(char*, ...);extern int cliInit(void);extern int cliExec(char*);/* * Ccmd.c */extern int cmdInit(void);/* * Ccons.c */extern int consPrompt(char*);extern int consInit(void);extern int consOpen(int, int, int);extern int consTTY(void);extern int consWrite(char*, int);/* * Clog.c */extern int consPrint(char*, ...);extern int consVPrint(char*, va_list);/* * fossil.c */extern int Dflag;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -