188 lines · 4.1 KB · C
RawDownload
/*  * This file is part of the UCB release of Plan 9. It is subject to the license * terms in the LICENSE file found in the top-level directory of this * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No * part of the UCB release of Plan 9, including this file, may be copied, * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ #define	SAMTERM #define	RUNESIZE	sizeof(Rune)#define	MAXFILES	256#define	READBUFSIZE 8192#define	NL	5 enum{	Up,	Down}; typedef struct Text	Text;typedef struct Section	Section;typedef struct Rasp	Rasp;typedef struct Readbuf Readbuf; struct Section{	long	nrunes;	Rune	*text;		/* if null, we haven't got it */	Section	*next;}; struct Rasp{	long	nrunes;	Section	*sect;}; #define	Untagged	((ushort)65535) struct Text{	Rasp	rasp;	short	nwin;	short	front;		/* input window */	ushort	tag;	char	lock;	Flayer	l[NL];		/* screen storage */}; struct Readbuf{	short	n;					/* # bytes in buf */	uchar	data[READBUFSIZE];		/* data bytes */}; enum Resource{	RHost,	RKeyboard,	RMouse,	RPlumb,	RResize,	NRes,}; extern Text	**text;extern uchar	**name;extern ushort	*tag;extern int	nname;extern int	mname;extern Cursor	bullseye;extern Cursor	deadmouse;extern Cursor	lockarrow;extern Cursor	*cursor;extern Flayer	*which;extern Flayer	*work;extern Text	cmd;extern Rune	*scratch;extern long	nscralloc;extern char	hostlock;extern char	hasunlocked;extern long	snarflen;extern Mousectl* mousectl;extern Keyboardctl* keyboardctl;extern Mouse*	mousep;extern long	modified;extern int	maxtab;extern Readbuf	hostbuf[2];	/* double buffer; it's synchronous communication */extern Readbuf	plumbbuf[2];	/* double buffer; it's synchronous communication */extern Channel *plumbc;extern Channel *hostc;extern int	hversion;extern int	plumbfd;extern int	exiting;extern int	autoindent; Rune	*gettext(Flayer*, long, ulong*);void	*alloc(ulong n); void	iconinit(void);void	getscreen(int, char**);void	initio(void);void	setlock(void);void	outcmd(void);void	rinit(Rasp*);void	startnewfile(int, Text*);void	getmouse(void);void	mouseunblock(void);void	kbdblock(void);void	extstart(void);void	hoststart(void);int	plumbstart(void);int	button(int but);int	load(char*, int);int	waitforio(void);int	rcvchar(void);int	getch(void);int	kbdchar(void);int	qpeekc(void);void	cut(Text*, int, int, int);void	paste(Text*, int);void	snarf(Text*, int);int	center(Flayer*, long);int	xmenuhit(int, Menu*);void	buttons(int);int	getr(Rectangle*);void	current(Flayer*);void	duplicate(Flayer*, Rectangle, Font*, int);void	startfile(Text*);void	panic(char*);void	panic1(Display*, char*);void	closeup(Flayer*);void	Strgrow(Rune**, long*, int);int	RESIZED(void);void	resize(void);void	rcv(void);void	type(Flayer*, int);void	menu2hit(void);void	menu3hit(void);void	scroll(Flayer*, int);void	hcheck(int);void	rclear(Rasp*);int	whichmenu(int);void	hcut(int, long, long);void	horigin(int, long);void	hgrow(int, long, long, int);int	hdata(int, long, uchar*, int);int	hdatarune(int, long, Rune*, int);Rune	*rload(Rasp*, ulong, ulong, ulong*);void	menuins(int, uchar*, Text*, int, int);void	menudel(int);Text	*sweeptext(int, int);void	setpat(char*);void	scrdraw(Flayer*, long tot);int	rcontig(Rasp*, ulong, ulong, int);int	rmissing(Rasp*, ulong, ulong);void	rresize(Rasp *, long, long, long);void	rdata(Rasp*, long, long, Rune*);void	rclean(Rasp*);void	scrorigin(Flayer*, int, long);long	scrtotal(Flayer*);void	flnewlyvisible(Flayer*);char	*rcvstring(void);void	Strcpy(Rune*, Rune*);void	Strncpy(Rune*, Rune*, long);void	flushtyping(int);void	dumperrmsg(int, int, int, int);int	screensize(int*,int*);void	getmouse(void); #include "mesg.h" void	outTs(Tmesg, int);void	outT0(Tmesg);void	outTl(Tmesg, long);void	outTslS(Tmesg, int, long, Rune*);void	outTsll(Tmesg, int, long, long);void	outTsl(Tmesg, int, long);void	outTsv(Tmesg, int, vlong);void	outTv(Tmesg, vlong);void	outstart(Tmesg);void	outcopy(int, uchar*);void	outshort(int);void	outlong(long);void	outvlong(vlong);void	outsend(void);