xref: /plan9/acme/bin/source/win/dat.h (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
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