dat.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /*
  2. * This file is part of the UCB release of Plan 9. It is subject to the license
  3. * terms in the LICENSE file found in the top-level directory of this
  4. * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
  5. * part of the UCB release of Plan 9, including this file, may be copied,
  6. * modified, propagated, or distributed except according to the terms contained
  7. * in the LICENSE file.
  8. */
  9. typedef struct Fsevent Fsevent;
  10. typedef struct Event Event;
  11. typedef struct Message Message;
  12. typedef struct Window Window;
  13. enum
  14. {
  15. STACK = 8192,
  16. NPIPEDATA = 8000,
  17. NPIPE = NPIPEDATA+32,
  18. /* EVENTSIZE is really 256 in acme, but we use events internally and want bigger buffers */
  19. EVENTSIZE = 8192,
  20. NEVENT = 5,
  21. };
  22. struct Fsevent
  23. {
  24. int type;
  25. void *r;
  26. };
  27. struct Event
  28. {
  29. int c1;
  30. int c2;
  31. int q0;
  32. int q1;
  33. int flag;
  34. int nb;
  35. int nr;
  36. char b[EVENTSIZE*UTFmax+1];
  37. Rune r[EVENTSIZE+1];
  38. };
  39. struct Window
  40. {
  41. /* file descriptors */
  42. int ctl;
  43. int event;
  44. int addr;
  45. int data;
  46. int body;
  47. /* event input */
  48. char buf[512];
  49. char *bufp;
  50. int nbuf;
  51. Event e[NEVENT];
  52. int id;
  53. int open;
  54. Channel *cevent;
  55. };
  56. extern Window* newwindow(void);
  57. extern int winopenfile(Window*, char*);
  58. extern void wintagwrite(Window*, char*, int);
  59. extern void winname(Window*, char*);
  60. extern void winwriteevent(Window*, Event*);
  61. extern int winread(Window*, uint, uint, char*);
  62. extern int windel(Window*, int);
  63. extern void wingetevent(Window*, Event*);
  64. extern void wineventproc(void*);
  65. extern void winclean(Window*);
  66. extern int winselect(Window*, char*, int);
  67. extern int winsetaddr(Window*, char*, int);
  68. extern void windormant(Window*);
  69. extern void winsetdump(Window*, char*, char*);
  70. extern void ctlprint(int, char*, ...);
  71. extern void* emalloc(uint);
  72. extern char* estrdup(char*);
  73. extern char* estrstrdup(char*, char*);
  74. extern char* egrow(char*, char*, char*);
  75. extern char* eappend(char*, char*, char*);
  76. extern void error(char*, ...);
  77. extern void startpipe(void);
  78. extern void sendit(char*);
  79. extern void execevent(Window *w, Event *e, int (*)(Window*, char*));
  80. extern void mountcons(void);
  81. extern void fsloop(void*);
  82. extern int newpipewin(int, char*);
  83. extern void startpipe(void);
  84. extern int pipecommand(Window*, char*);
  85. extern void pipectl(void*);
  86. #pragma varargck argpos error 1
  87. #pragma varargck argpos ctlprint 2
  88. extern Window *win;
  89. extern Channel *fschan, *writechan;