aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/fossil/9.h
diff options
context:
space:
mode:
authorDavid du Colombier <0intro@gmail.com>2013-09-23 23:00:39 +0200
committerDavid du Colombier <0intro@gmail.com>2013-09-23 23:00:39 +0200
commit6f4d00ee45693290fae042b27536b54f77b96acd (patch)
tree60ad31bf16ed2000661c02345dd2a63851588a5d /src/cmd/fossil/9.h
parentfea86f063930ea187f1c77e93207ac8d39125520 (diff)
downloadplan9port-6f4d00ee45693290fae042b27536b54f77b96acd.tar.gz
plan9port-6f4d00ee45693290fae042b27536b54f77b96acd.tar.bz2
plan9port-6f4d00ee45693290fae042b27536b54f77b96acd.zip
fossil: import from plan 9
R=rsc https://codereview.appspot.com/7988047
Diffstat (limited to 'src/cmd/fossil/9.h')
-rw-r--r--src/cmd/fossil/9.h258
1 files changed, 258 insertions, 0 deletions
diff --git a/src/cmd/fossil/9.h b/src/cmd/fossil/9.h
new file mode 100644
index 00000000..b7bdec26
--- /dev/null
+++ b/src/cmd/fossil/9.h
@@ -0,0 +1,258 @@
+#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 Fsys
+
+struct 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*);
+#pragma varargck argpos cliError 1
+
+/*
+ * 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);
+#pragma varargck argpos consPrint 1
+
+/*
+ * fossil.c
+ */
+extern int Dflag;