xref: /plan9/sys/src/cmd/upas/scanmail/spam.h (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
180ee5cbfSDavid du Colombier 
280ee5cbfSDavid du Colombier enum{
380ee5cbfSDavid du Colombier 	Dump		= 0,		/* Actions must be in order of descending importance */
480ee5cbfSDavid du Colombier 	HoldHeader,
580ee5cbfSDavid du Colombier 	Hold,
680ee5cbfSDavid du Colombier 	SaveLine,
780ee5cbfSDavid du Colombier 	Lineoff,			/* Lineoff must be the last action code */
880ee5cbfSDavid du Colombier 	Nactions,
980ee5cbfSDavid du Colombier 
1080ee5cbfSDavid du Colombier 	Nhash		= 128,
1180ee5cbfSDavid du Colombier 
1280ee5cbfSDavid du Colombier 	regexp		= 1,		/* types: literal string or regular expression */
1380ee5cbfSDavid du Colombier 	string		= 2,
1480ee5cbfSDavid du Colombier 
1580ee5cbfSDavid du Colombier 	MaxHtml		= 256,
1680ee5cbfSDavid du Colombier 	Hdrsize		= 4096,
1780ee5cbfSDavid du Colombier 	Bodysize	= 8192,
1880ee5cbfSDavid du Colombier 	Maxread		= 64*1024,
1980ee5cbfSDavid du Colombier };
2080ee5cbfSDavid du Colombier 
2180ee5cbfSDavid du Colombier typedef struct spat 	Spat;
2280ee5cbfSDavid du Colombier typedef struct pattern	Pattern;
2380ee5cbfSDavid du Colombier typedef	struct patterns	Patterns;
2480ee5cbfSDavid du Colombier struct	spat
2580ee5cbfSDavid du Colombier {
2680ee5cbfSDavid du Colombier 	char*	string;
2780ee5cbfSDavid du Colombier 	int	len;
2880ee5cbfSDavid du Colombier 	int	c1;
2980ee5cbfSDavid du Colombier 	Spat*	next;
3080ee5cbfSDavid du Colombier 	Spat*	alt;
3180ee5cbfSDavid du Colombier };
3280ee5cbfSDavid du Colombier 
3380ee5cbfSDavid du Colombier struct	pattern{
3480ee5cbfSDavid du Colombier 	struct	pattern *next;
3580ee5cbfSDavid du Colombier 	int	action;
3680ee5cbfSDavid du Colombier 	int	type;
3780ee5cbfSDavid du Colombier 	Spat*	alt;
3880ee5cbfSDavid du Colombier 	union{
3980ee5cbfSDavid du Colombier 		Reprog*	pat;
4080ee5cbfSDavid du Colombier 		Spat*	spat[Nhash];
4180ee5cbfSDavid du Colombier 	};
4280ee5cbfSDavid du Colombier };
4380ee5cbfSDavid du Colombier 
4480ee5cbfSDavid du Colombier struct	patterns {
4580ee5cbfSDavid du Colombier 	char	*action;
4680ee5cbfSDavid du Colombier 	Pattern	*strings;
4780ee5cbfSDavid du Colombier 	Pattern	*regexps;
4880ee5cbfSDavid du Colombier };
4980ee5cbfSDavid du Colombier 
5080ee5cbfSDavid du Colombier extern	int	debug;
5180ee5cbfSDavid du Colombier extern	Patterns patterns[];
5280ee5cbfSDavid du Colombier extern	char	header[];
5380ee5cbfSDavid du Colombier extern	char	cmd[];
5480ee5cbfSDavid du Colombier 
55*9a747e4fSDavid du Colombier extern	void	conv64(char*, char*, char*, int);
56*9a747e4fSDavid du Colombier extern	int	convert(char*, char*, char*, int, int);
5780ee5cbfSDavid du Colombier extern	void*	Malloc(long n);
5880ee5cbfSDavid du Colombier extern	int	matchpat(Pattern*, char*, Resub*);
5980ee5cbfSDavid du Colombier extern	char*	readmsg(Biobuf*, int*, int*);
6080ee5cbfSDavid du Colombier extern	void	parsepats(Biobuf*);
6180ee5cbfSDavid du Colombier extern	void*	Realloc(void*, ulong);
6280ee5cbfSDavid du Colombier extern	void	xprint(int, char*, Resub*);
63