/* acme */ typedef struct Event Event; 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 { /* file descriptors */ int ctl; int event; int addr; int data; Biobuf *body; /* event input */ char buf[512]; char *bufp; int nbuf; Event e[NEVENT]; int dirtied; int id; int open; Channel *cevent; /* chan(Event*) */ }; extern Window* newwindow(void); extern int 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 int winsetaddr(Window*, char*, int); extern char* winreadbody(Window*, int*); extern void windormant(Window*); extern void winsetdump(Window*, char*, char*); extern char* readfile(char*, char*, int*); extern void ctlprint(int, char*, ...); extern void* emalloc(uint); extern char* estrdup(char*); extern char* estrstrdup(char*, char*); extern char* estrstrstrdup(char*, 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*);