|  | 
 | enum{ | 
 | 	Dump		= 0,		/* Actions must be in order of descending importance */ | 
 | 	HoldHeader, | 
 | 	Hold, | 
 | 	SaveLine, | 
 | 	Lineoff,			/* Lineoff must be the last action code */ | 
 | 	Nactions, | 
 |  | 
 | 	Nhash		= 128, | 
 |  | 
 | 	regexp		= 1,		/* types: literal string or regular expression */ | 
 | 	string		= 2, | 
 |  | 
 | 	MaxHtml		= 256, | 
 | 	Hdrsize		= 4096, | 
 | 	Bodysize	= 8192, | 
 | 	Maxread		= 64*1024 | 
 | }; | 
 |  | 
 | typedef struct spat 	Spat; | 
 | typedef struct pattern	Pattern; | 
 | typedef	struct patterns	Patterns; | 
 | struct	spat | 
 | { | 
 | 	char*	string; | 
 | 	int	len; | 
 | 	int	c1; | 
 | 	Spat*	next; | 
 | 	Spat*	alt; | 
 | }; | 
 |  | 
 | struct	pattern{ | 
 | 	struct	pattern *next; | 
 | 	int	action; | 
 | 	int	type; | 
 | 	Spat*	alt; | 
 | 	union{ | 
 | 		Reprog*	pat; | 
 | 		Spat*	spat[Nhash]; | 
 | 	}; | 
 | }; | 
 |  | 
 | struct	patterns { | 
 | 	char	*action; | 
 | 	Pattern	*strings; | 
 | 	Pattern	*regexps; | 
 | }; | 
 |  | 
 | extern	int	debug; | 
 | extern	Patterns patterns[]; | 
 | extern	char	header[]; | 
 | extern	char	cmd[]; | 
 |  | 
 | extern	void	conv64(char*, char*, char*, int); | 
 | extern	int	convert(char*, char*, char*, int, int); | 
 | extern	void*	Malloc(long n); | 
 | extern	int	matchpat(Pattern*, char*, Resub*); | 
 | extern	char*	readmsg(Biobuf*, int*, int*); | 
 | extern	void	parsepats(Biobuf*); | 
 | extern	void*	Realloc(void*, ulong); | 
 | extern	void	xprint(int, char*, Resub*); |