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