xref: /plan9/sys/src/cmd/upas/scanmail/spam.h (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
1 
2 enum{
3 	Dump		= 0,		/* Actions must be in order of descending importance */
4 	HoldHeader,
5 	Hold,
6 	SaveLine,
7 	Lineoff,			/* Lineoff must be the last action code */
8 	Nactions,
9 
10 	Nhash		= 128,
11 
12 	regexp		= 1,		/* types: literal string or regular expression */
13 	string		= 2,
14 
15 	MaxHtml		= 256,
16 	Hdrsize		= 4096,
17 	Bodysize	= 8192,
18 	Maxread		= 64*1024,
19 };
20 
21 typedef struct spat 	Spat;
22 typedef struct pattern	Pattern;
23 typedef	struct patterns	Patterns;
24 struct	spat
25 {
26 	char*	string;
27 	int	len;
28 	int	c1;
29 	Spat*	next;
30 	Spat*	alt;
31 };
32 
33 struct	pattern{
34 	struct	pattern *next;
35 	int	action;
36 	int	type;
37 	Spat*	alt;
38 	union{
39 		Reprog*	pat;
40 		Spat*	spat[Nhash];
41 	};
42 };
43 
44 struct	patterns {
45 	char	*action;
46 	Pattern	*strings;
47 	Pattern	*regexps;
48 };
49 
50 extern	int	debug;
51 extern	Patterns patterns[];
52 extern	char	header[];
53 extern	char	cmd[];
54 
55 extern	void	conv64(char*, char*, char*, int);
56 extern	int	convert(char*, char*, char*, int, int);
57 extern	void*	Malloc(long n);
58 extern	int	matchpat(Pattern*, char*, Resub*);
59 extern	char*	readmsg(Biobuf*, int*, int*);
60 extern	void	parsepats(Biobuf*);
61 extern	void*	Realloc(void*, ulong);
62 extern	void	xprint(int, char*, Resub*);
63