1*9a747e4fSDavid du Colombier typedef struct Fsevent Fsevent; 27dd7cddfSDavid du Colombier typedef struct Event Event; 37dd7cddfSDavid du Colombier typedef struct Message Message; 47dd7cddfSDavid du Colombier typedef struct Window Window; 57dd7cddfSDavid du Colombier 67dd7cddfSDavid du Colombier enum 77dd7cddfSDavid du Colombier { 87dd7cddfSDavid du Colombier STACK = 8192, 97dd7cddfSDavid du Colombier NPIPEDATA = 8000, 107dd7cddfSDavid du Colombier NPIPE = NPIPEDATA+32, 117dd7cddfSDavid du Colombier /* EVENTSIZE is really 256 in acme, but we use events internally and want bigger buffers */ 12*9a747e4fSDavid du Colombier EVENTSIZE = 8192, 137dd7cddfSDavid du Colombier NEVENT = 5, 147dd7cddfSDavid du Colombier }; 157dd7cddfSDavid du Colombier 16*9a747e4fSDavid du Colombier struct Fsevent 17*9a747e4fSDavid du Colombier { 18*9a747e4fSDavid du Colombier int type; 19*9a747e4fSDavid du Colombier void *r; 20*9a747e4fSDavid du Colombier }; 21*9a747e4fSDavid du Colombier 227dd7cddfSDavid du Colombier struct Event 237dd7cddfSDavid du Colombier { 247dd7cddfSDavid du Colombier int c1; 257dd7cddfSDavid du Colombier int c2; 267dd7cddfSDavid du Colombier int q0; 277dd7cddfSDavid du Colombier int q1; 287dd7cddfSDavid du Colombier int flag; 297dd7cddfSDavid du Colombier int nb; 307dd7cddfSDavid du Colombier int nr; 317dd7cddfSDavid du Colombier char b[EVENTSIZE*UTFmax+1]; 327dd7cddfSDavid du Colombier Rune r[EVENTSIZE+1]; 337dd7cddfSDavid du Colombier }; 347dd7cddfSDavid du Colombier 357dd7cddfSDavid du Colombier struct Window 367dd7cddfSDavid du Colombier { 377dd7cddfSDavid du Colombier /* file descriptors */ 387dd7cddfSDavid du Colombier int ctl; 397dd7cddfSDavid du Colombier int event; 407dd7cddfSDavid du Colombier int addr; 417dd7cddfSDavid du Colombier int data; 427dd7cddfSDavid du Colombier int body; 437dd7cddfSDavid du Colombier 447dd7cddfSDavid du Colombier /* event input */ 457dd7cddfSDavid du Colombier char buf[512]; 467dd7cddfSDavid du Colombier char *bufp; 477dd7cddfSDavid du Colombier int nbuf; 487dd7cddfSDavid du Colombier Event e[NEVENT]; 497dd7cddfSDavid du Colombier 507dd7cddfSDavid du Colombier int id; 517dd7cddfSDavid du Colombier int open; 527dd7cddfSDavid du Colombier Channel *cevent; 537dd7cddfSDavid du Colombier }; 547dd7cddfSDavid du Colombier 557dd7cddfSDavid du Colombier extern Window* newwindow(void); 567dd7cddfSDavid du Colombier extern int winopenfile(Window*, char*); 577dd7cddfSDavid du Colombier extern void wintagwrite(Window*, char*, int); 587dd7cddfSDavid du Colombier extern void winname(Window*, char*); 597dd7cddfSDavid du Colombier extern void winwriteevent(Window*, Event*); 607dd7cddfSDavid du Colombier extern int winread(Window*, uint, uint, char*); 617dd7cddfSDavid du Colombier extern int windel(Window*, int); 627dd7cddfSDavid du Colombier extern void wingetevent(Window*, Event*); 637dd7cddfSDavid du Colombier extern void wineventproc(void*); 647dd7cddfSDavid du Colombier extern void winclean(Window*); 657dd7cddfSDavid du Colombier extern int winselect(Window*, char*, int); 667dd7cddfSDavid du Colombier extern int winsetaddr(Window*, char*, int); 677dd7cddfSDavid du Colombier extern void windormant(Window*); 687dd7cddfSDavid du Colombier extern void winsetdump(Window*, char*, char*); 697dd7cddfSDavid du Colombier 707dd7cddfSDavid du Colombier extern void ctlprint(int, char*, ...); 717dd7cddfSDavid du Colombier extern void* emalloc(uint); 727dd7cddfSDavid du Colombier extern char* estrdup(char*); 737dd7cddfSDavid du Colombier extern char* estrstrdup(char*, char*); 747dd7cddfSDavid du Colombier extern char* egrow(char*, char*, char*); 757dd7cddfSDavid du Colombier extern char* eappend(char*, char*, char*); 767dd7cddfSDavid du Colombier extern void error(char*, ...); 777dd7cddfSDavid du Colombier 787dd7cddfSDavid du Colombier extern void startpipe(void); 797dd7cddfSDavid du Colombier extern void sendit(char*); 807dd7cddfSDavid du Colombier extern void execevent(Window *w, Event *e, int (*)(Window*, char*)); 817dd7cddfSDavid du Colombier 82*9a747e4fSDavid du Colombier extern void mountcons(void); 83*9a747e4fSDavid du Colombier extern void fsloop(void*); 84*9a747e4fSDavid du Colombier 85*9a747e4fSDavid du Colombier extern int newpipewin(int, char*); 86*9a747e4fSDavid du Colombier extern void startpipe(void); 87*9a747e4fSDavid du Colombier extern int pipecommand(Window*, char*); 88*9a747e4fSDavid du Colombier extern void pipectl(void*); 89*9a747e4fSDavid du Colombier 907dd7cddfSDavid du Colombier #pragma varargck argpos error 1 917dd7cddfSDavid du Colombier #pragma varargck argpos ctlprint 2 927dd7cddfSDavid du Colombier 937dd7cddfSDavid du Colombier extern Window *win; 94*9a747e4fSDavid du Colombier extern Channel *fschan, *writechan; 95*9a747e4fSDavid du Colombier 96