URI:
       t9.h - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       t9.h (4489B)
       ---
            1 #include <auth.h>
            2 #include <fcall.h>
            3 
            4 enum {
            5         NFidHash        = 503,
            6 };
            7 
            8 typedef struct Con Con;
            9 typedef struct DirBuf DirBuf;
           10 typedef struct Excl Excl;
           11 typedef struct Fid Fid;
           12 typedef struct Fsys Fsys;
           13 typedef struct Msg Msg;
           14 
           15 #pragma incomplete DirBuf
           16 #pragma incomplete Excl
           17 #pragma incomplete Fsys
           18 
           19 struct Msg {
           20         uchar*        data;
           21         u32int        msize;                        /* actual size of data */
           22         Fcall        t;
           23         Fcall        r;
           24         Con*        con;
           25 
           26         Msg*        anext;                        /* allocation free list */
           27 
           28         Msg*        mnext;                        /* all active messsages on this Con */
           29         Msg*         mprev;
           30 
           31         int        state;                        /* */
           32 
           33         Msg*        flush;                        /* flushes waiting for this Msg */
           34 
           35         Msg*        rwnext;                        /* read/write queue */
           36         int        nowq;                        /* do not place on write queue */
           37 };
           38 
           39 enum {
           40         MsgN                = 0,
           41         MsgR                = 1,
           42         Msg9                = 2,
           43         MsgW                = 3,
           44         MsgF                = 4,
           45 };
           46 
           47 enum {
           48         ConNoneAllow        = 1<<0,
           49         ConNoAuthCheck        = 1<<1,
           50         ConNoPermCheck        = 1<<2,
           51         ConWstatAllow        = 1<<3,
           52         ConIPCheck        = 1<<4,
           53 };
           54 struct Con {
           55         char*        name;
           56         uchar*        data;                        /* max, not negotiated */
           57         int        isconsole;                /* immutable */
           58         int        flags;                        /* immutable */
           59         char        remote[128];                /* immutable */
           60         QLock        lock;
           61         int        state;
           62         int        fd;
           63         Msg*        version;
           64         u32int        msize;                        /* negotiated with Tversion */
           65         Rendez        rendez;
           66 
           67         Con*        anext;                        /* alloc */
           68         Con*        cnext;                        /* in use */
           69         Con*        cprev;
           70 
           71         RWLock        alock;
           72         int        aok;                        /* authentication done */
           73 
           74         QLock        mlock;
           75         Msg*        mhead;                        /* all Msgs on this connection */
           76         Msg*        mtail;
           77         Rendez        mrendez;
           78 
           79         QLock        wlock;
           80         Msg*        whead;                        /* write queue */
           81         Msg*        wtail;
           82         Rendez        wrendez;
           83 
           84         QLock        fidlock;                /* */
           85         Fid*        fidhash[NFidHash];
           86         Fid*        fhead;
           87         Fid*        ftail;
           88         int        nfid;
           89 };
           90 
           91 enum {
           92         ConDead                = 0,
           93         ConNew                = 1,
           94         ConDown                = 2,
           95         ConInit                = 3,
           96         ConUp                = 4,
           97         ConMoribund        = 5,
           98 };
           99 
          100 struct Fid {
          101         RWLock        lock;
          102         Con*        con;
          103         u32int        fidno;
          104         int        ref;                        /* inc/dec under Con.fidlock */
          105         int        flags;
          106 
          107         int        open;
          108         Fsys*        fsys;
          109         File*        file;
          110         Qid        qid;
          111         char*        uid;
          112         char*        uname;
          113         DirBuf*        db;
          114         Excl*        excl;
          115 
          116         QLock        alock;                        /* Tauth/Tattach */
          117         AuthRpc* rpc;
          118         char*        cuname;
          119 
          120         Fid*        sort;                        /* sorted by uname in cmdWho */
          121         Fid*        hash;                        /* lookup by fidno */
          122         Fid*        next;                        /* clunk session with Tversion */
          123         Fid*        prev;
          124 };
          125 
          126 enum {                                        /* Fid.flags and fidGet(..., flags) */
          127         FidFCreate        = 0x01,
          128         FidFWlock        = 0x02,
          129 };
          130 
          131 enum {                                        /* Fid.open */
          132         FidOCreate        = 0x01,
          133         FidORead        = 0x02,
          134         FidOWrite        = 0x04,
          135         FidORclose        = 0x08,
          136 };
          137 
          138 /*
          139  * 9p.c
          140  */
          141 extern int (*rFcall[Tmax])(Msg*);
          142 extern int validFileName(char*);
          143 
          144 /*
          145  * 9auth.c
          146  */
          147 extern int authCheck(Fcall*, Fid*, Fsys*);
          148 extern int authRead(Fid*, void*, int);
          149 extern int authWrite(Fid*, void*, int);
          150 
          151 /*
          152  * 9dir.c
          153  */
          154 extern void dirBufFree(DirBuf*);
          155 extern int dirDe2M(DirEntry*, uchar*, int);
          156 extern int dirRead(Fid*, uchar*, int, vlong);
          157 
          158 /*
          159  * 9excl.c
          160  */
          161 extern int exclAlloc(Fid*);
          162 extern void exclFree(Fid*);
          163 extern void exclInit(void);
          164 extern int exclUpdate(Fid*);
          165 
          166 /*
          167  * 9fid.c
          168  */
          169 extern void fidClunk(Fid*);
          170 extern void fidClunkAll(Con*);
          171 extern Fid* fidGet(Con*, u32int, int);
          172 extern void fidInit(void);
          173 extern void fidPut(Fid*);
          174 
          175 /*
          176  * 9fsys.c
          177  */
          178 extern void fsysFsRlock(Fsys*);
          179 extern void fsysFsRUnlock(Fsys*);
          180 extern Fs* fsysGetFs(Fsys*);
          181 extern Fsys* fsysGet(char*);
          182 extern char* fsysGetName(Fsys*);
          183 extern File* fsysGetRoot(Fsys*, char*);
          184 extern Fsys* fsysIncRef(Fsys*);
          185 extern int fsysInit(void);
          186 extern int fsysNoAuthCheck(Fsys*);
          187 extern int fsysNoPermCheck(Fsys*);
          188 extern void fsysPut(Fsys*);
          189 extern int fsysWstatAllow(Fsys*);
          190 
          191 /*
          192  * 9lstn.c
          193  */
          194 extern int lstnInit(void);
          195 
          196 /*
          197  * 9proc.c
          198  */
          199 extern Con* conAlloc(int, char*, int);
          200 extern void conInit(void);
          201 extern void msgFlush(Msg*);
          202 extern void msgInit(void);
          203 
          204 /*
          205  * 9srv.c
          206  */
          207 extern int srvInit(void);
          208 
          209 /*
          210  * 9user.c
          211  */
          212 extern int groupLeader(char*, char*);
          213 extern int groupMember(char*, char*);
          214 extern int groupWriteMember(char*);
          215 extern char* unameByUid(char*);
          216 extern char* uidByUname(char*);
          217 extern int usersInit(void);
          218 extern int usersFileRead(char*);
          219 extern int validUserName(char*);
          220 
          221 extern char* uidadm;
          222 extern char* unamenone;
          223 extern char* uidnoworld;
          224 
          225 /*
          226  * Ccli.c
          227  */
          228 extern int cliAddCmd(char*, int (*)(int, char*[]));
          229 extern int cliError(char*, ...);
          230 extern int cliInit(void);
          231 extern int cliExec(char*);
          232 #pragma        varargck        argpos        cliError        1
          233 
          234 /*
          235  * Ccmd.c
          236  */
          237 extern int cmdInit(void);
          238 
          239 /*
          240  * Ccons.c
          241  */
          242 extern int consPrompt(char*);
          243 extern int consInit(void);
          244 extern int consOpen(int, int, int);
          245 extern int consTTY(void);
          246 extern int consWrite(char*, int);
          247 
          248 /*
          249  * Clog.c
          250  */
          251 extern int consPrint(char*, ...);
          252 extern int consVPrint(char*, va_list);
          253 #pragma        varargck        argpos        consPrint        1
          254 
          255 /*
          256  * fossil.c
          257  */
          258 extern int Dflag;