URI:
       tdat.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
       ---
       tdat.h (4205B)
       ---
            1 typedef struct Event Event;
            2 typedef struct Exec Exec;
            3 typedef struct Message Message;
            4 typedef struct Window Window;
            5 
            6 enum
            7 {
            8         STACK                = 8192,
            9         EVENTSIZE        = 256,
           10         NEVENT                = 5
           11 };
           12 
           13 struct Event
           14 {
           15         int        c1;
           16         int        c2;
           17         int        q0;
           18         int        q1;
           19         int        flag;
           20         int        nb;
           21         int        nr;
           22         char        b[EVENTSIZE*UTFmax+1];
           23         Rune        r[EVENTSIZE+1];
           24 };
           25 
           26 struct Window
           27 {
           28         /* coordinate wineventproc and window thread */
           29         QLock        lk;
           30         int                ref;
           31 
           32         /* file descriptors */
           33         CFid*                ctl;
           34         CFid*                event;
           35         CFid*                addr;
           36         CFid*                data;
           37         CFid*                body;
           38 
           39         /* event input */
           40         char                buf[512];
           41         char                *bufp;
           42         int                nbuf;
           43         Event        e[NEVENT];
           44 
           45         int                id;
           46         int                open;
           47         Channel        *cevent;
           48 };
           49 
           50 struct Message
           51 {
           52         Window        *w;
           53         CFid*        ctlfd;
           54         char                *name;
           55         char                *replyname;
           56         uchar        opened;
           57         uchar        dirty;
           58         uchar        isreply;
           59         uchar        deleted;
           60         uchar        writebackdel;
           61         uchar        tagposted;
           62         uchar        recursed;
           63         uchar        level;
           64         uint                replywinid;
           65 
           66         /* header info */
           67         char                *from;
           68         char                *fromcolon;
           69         char                *to;
           70         char                *cc;
           71         char                *replyto;
           72         char                *sender;
           73         char                *date;
           74         char                *subject;
           75         char                *type;
           76         char                *disposition;
           77         char                *filename;
           78         char                *digest;
           79 
           80         Message        *next;        /* next in this mailbox */
           81         Message        *prev;        /* prev in this mailbox */
           82         Message        *head;        /* first subpart */
           83         Message        *tail;                /* last subpart */
           84 };
           85 
           86 enum
           87 {
           88         NARGS                = 100,
           89         NARGCHAR        = 8*1024,
           90         EXECSTACK         = STACK+(NARGS+1)*sizeof(char*)+NARGCHAR
           91 };
           92 
           93 struct Exec
           94 {
           95         char                *prog;
           96         char                **argv;
           97         int                p[2];        /* p[1] is write to program; p[0] set to prog fd 0*/
           98         int                q[2];        /* q[0] is read from program; q[1] set to prog fd 1 */
           99         Channel        *sync;
          100 };
          101 
          102 extern        Window*        newwindow(void);
          103 extern        CFid*        winopenfile(Window*, char*);
          104 extern        void                winopenbody(Window*, int);
          105 extern        void                winclosebody(Window*);
          106 extern        void                wintagwrite(Window*, char*, int);
          107 extern        void                winname(Window*, char*);
          108 extern        void                winwriteevent(Window*, Event*);
          109 extern        void                winread(Window*, uint, uint, char*);
          110 extern        int                windel(Window*, int);
          111 extern        void                wingetevent(Window*, Event*);
          112 extern        void                wineventproc(void*);
          113 extern        void                winwritebody(Window*, char*, int);
          114 extern        void                winclean(Window*);
          115 extern        int                winselect(Window*, char*, int);
          116 extern        char*        winselection(Window*);
          117 extern        int                winsetaddr(Window*, char*, int);
          118 extern        char*        winreadbody(Window*, int*);
          119 extern        void                windormant(Window*);
          120 extern        void                winsetdump(Window*, char*, char*);
          121 extern        void                winincref(Window*);
          122 extern        void                windecref(Window*);
          123 
          124 extern        void                readmbox(Message*, char*, char*);
          125 extern        void                rewritembox(Window*, Message*);
          126 
          127 extern        void                mkreply(Message*, char*, char*, Plumbattr*, char*);
          128 extern        void                delreply(Message*);
          129 
          130 extern        int                mesgadd(Message*, char*, Dir*, char*);
          131 extern        void                mesgmenu(Window*, Message*);
          132 extern        void                mesgmenunew(Window*, Message*);
          133 extern        int                mesgopen(Message*, char*, char*, Message*, int, char*);
          134 extern        void                mesgctl(void*);
          135 extern        void                mesgsend(Message*);
          136 extern        void                mesgdel(Message*, Message*);
          137 extern        void                mesgmenudel(Window*, Message*, Message*);
          138 extern        void                mesgmenumark(Window*, char*, char*);
          139 extern        void                mesgmenumarkdel(Window*, Message*, Message*, int);
          140 extern        Message*        mesglookup(Message*, char*, char*);
          141 extern        Message*        mesglookupfile(Message*, char*, char*);
          142 extern        void                mesgfreeparts(Message*);
          143 extern        int                mesgcommand(Message*, char*);
          144 
          145 extern        char*        info(Message*, int, int);
          146 extern        char*        readfile(char*, char*, int*);
          147 extern        char*        readbody(char*, char*, int*);
          148 extern        void                ctlprint(CFid*, char*, ...);
          149 extern        void*        emalloc(uint);
          150 extern        void*        erealloc(void*, uint);
          151 extern        char*        estrdup(char*);
          152 extern        char*        estrstrdup(char*, char*);
          153 extern        char*        egrow(char*, char*, char*);
          154 extern        char*        eappend(char*, char*, char*);
          155 extern        void                error(char*, ...);
          156 extern        int                tokenizec(char*, char**, int, char*);
          157 extern        void                execproc(void*);
          158 extern        int                fsprint(CFid*, char*, ...);
          159 
          160 #pragma        varargck        argpos        error        1
          161 #pragma        varargck        argpos        ctlprint        2
          162 
          163 extern        Window        *wbox;
          164 extern        Message        mbox;
          165 extern        Message        replies;
          166 extern        char                *fsname;
          167 extern        CFid                *plumbsendfd;
          168 extern        CFid                *plumbseemailfd;
          169 extern        char                *home;
          170 extern        char                *outgoing;
          171 extern        char                *mailboxdir;
          172 extern        char                *mboxname;
          173 extern        char                *user;
          174 extern        char                *srvname;
          175 extern        char                deleted[];
          176 extern        int                wctlfd;
          177 extern        int                shortmenu;
          178 
          179 extern        CFsys        *mailfs;
          180 extern        CFsys        *acmefs;