dat.h 3.8 KB

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