comparison src/filter.h @ 128:8897b7e3b108 noffle

[svn] Add article filtering
author bears
date Wed, 09 Aug 2000 22:19:17 +0100
parents
children a4e9a20e50e5
comparison
equal deleted inserted replaced
127:3c71e28c8eef 128:8897b7e3b108
1 /*
2 filter.h
3
4 Article filtering.
5
6 $Id: filter.h 189 2000-08-09 21:19:17Z bears $
7 */
8
9 #ifndef FILTER_H
10 #define FILTER_H
11
12 #include <sys/types.h>
13 #include <regex.h>
14 #include "fetchlist.h"
15 #include "over.h"
16
17 /* The possible actions in a filter. */
18 typedef enum {
19 FILTER_FULL,
20 FILTER_XOVER,
21 FILTER_THREAD,
22 FILTER_DISCARD
23 } FilterAction;
24
25 /* Representation of a rule. */
26 typedef enum {
27 RULE_NEWSGROUP, /* Wildmat data */
28 RULE_SUBJECT, /* Regex data */
29 RULE_FROM,
30 RULE_MSGID,
31 RULE_BYTES_LT, RULE_BYTES_EQ, RULE_BYTES_GT, /* Number data */
32 RULE_LINES_LT, RULE_LINES_EQ, RULE_LINES_GT,
33 RULE_NOREFS_LT, RULE_NOREFS_EQ, RULE_NOREFS_GT,
34 RULE_XPOSTS_LT, RULE_XPOSTS_EQ, RULE_XPOSTS_GT
35 } FilterRuleType;
36
37 typedef union {
38 regex_t regex;
39 unsigned long amount;
40 char *grp;
41 } FilterRuleData;
42
43 typedef struct {
44 FilterRuleType type;
45 FilterRuleData data;
46 } FilterRule;
47
48 /* A single filter is a collection of rules with an action. */
49 typedef struct {
50 int nRules;
51 int maxRules;
52 FilterRule *rules;
53 FilterAction action;
54 } Filter;
55
56 /* Add a filter to the list of filters. */
57 void
58 Flt_addFilter( const Filter *f );
59
60 /*
61 * Run the rules over the supplied overview. If a specific rule fires,
62 * returns its action. If no rule fires, return the default read mode.
63 */
64 FilterAction
65 Flt_checkFilters( const char *thisGrp, const char *newsgroups,
66 const Over *ov, FetchMode mode );
67
68 /*
69 * Build and access a filter
70 */
71 Filter *
72 new_Filter( void );
73
74 void
75 del_Filter( Filter *f );
76
77 FilterAction
78 Flt_action( const Filter *f );
79
80 int
81 Flt_nRules( const Filter *f );
82
83 Bool
84 Flt_getNewsgroups( void );
85
86 FilterRule
87 Flt_rule( const Filter *f, int ruleNo );
88
89 void
90 Flt_setAction( Filter *f, FilterAction action );
91
92 void
93 Flt_addRule( Filter *f, FilterRule rule );
94
95 #endif /* FILTER_H */