annotate src/filter.h @ 239:2b7ddb90d9b2 noffle

[svn] * src/over.c: Fix warning. * src/fetchlist.h,src/fetchlist.c,src/noffle.c: Provide fetchmode for groups on fetchlist. * src/server.c: When fetching overviews online from groups on the fetchlist, fetch them in the appropriate fetch mode for the group. E.g. if group mode is FULL, fetch overviews and put all articles on articles required list to be fetched on the next noffle --fetch. * packages/redhat/noffle.spec: Incorporate changes from Carles Arjona.
author bears
date Thu, 14 Feb 2002 17:17:02 +0000
parents 21200ce10e68
children 0340b9c17edc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
128
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
1 /*
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
2 filter.h
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
3
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
4 Article filtering.
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
5
212
21200ce10e68 [svn] filter post-status=mod|yes|no.
mirkol
parents: 194
diff changeset
6 $Id: filter.h 331 2001-11-22 12:04:45Z mirkol $
128
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
7 */
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
8
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
9 #ifndef FILTER_H
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
10 #define FILTER_H
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
11
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
12 #include <sys/types.h>
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
13 #include <regex.h>
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
14 #include "fetchlist.h"
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
15 #include "over.h"
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
16
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
17 /* The possible actions in a filter. */
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
18 typedef enum {
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
19 FILTER_FULL,
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
20 FILTER_XOVER,
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
21 FILTER_THREAD,
194
a4e9a20e50e5 [svn] * docs/noffle.conf.5,src/configfile.c,src/filter.h,src/filter.c:
bears
parents: 128
diff changeset
22 FILTER_DISCARD,
a4e9a20e50e5 [svn] * docs/noffle.conf.5,src/configfile.c,src/filter.h,src/filter.c:
bears
parents: 128
diff changeset
23 FILTER_DEFAULT
128
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
24 } FilterAction;
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
25
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
26 /* Representation of a rule. */
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
27 typedef enum {
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
28 RULE_NEWSGROUP, /* Wildmat data */
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
29 RULE_SUBJECT, /* Regex data */
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
30 RULE_FROM,
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
31 RULE_MSGID,
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
32 RULE_BYTES_LT, RULE_BYTES_EQ, RULE_BYTES_GT, /* Number data */
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
33 RULE_LINES_LT, RULE_LINES_EQ, RULE_LINES_GT,
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
34 RULE_NOREFS_LT, RULE_NOREFS_EQ, RULE_NOREFS_GT,
212
21200ce10e68 [svn] filter post-status=mod|yes|no.
mirkol
parents: 194
diff changeset
35 RULE_XPOSTS_LT, RULE_XPOSTS_EQ, RULE_XPOSTS_GT,
21200ce10e68 [svn] filter post-status=mod|yes|no.
mirkol
parents: 194
diff changeset
36 RULE_POST_STATUS /* 'y','n','m' */
128
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
37 } FilterRuleType;
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
38
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
39 typedef union {
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
40 regex_t regex;
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
41 unsigned long amount;
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
42 char *grp;
212
21200ce10e68 [svn] filter post-status=mod|yes|no.
mirkol
parents: 194
diff changeset
43 char postAllow; /* 'y','n','m' */
128
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
44 } FilterRuleData;
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
45
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
46 typedef struct {
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
47 FilterRuleType type;
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
48 FilterRuleData data;
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
49 } FilterRule;
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
50
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
51 /* A single filter is a collection of rules with an action. */
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
52 typedef struct {
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
53 int nRules;
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
54 int maxRules;
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
55 FilterRule *rules;
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
56 FilterAction action;
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
57 } Filter;
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
58
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
59 /* Add a filter to the list of filters. */
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
60 void
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
61 Flt_addFilter( const Filter *f );
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
62
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
63 /*
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
64 * Run the rules over the supplied overview. If a specific rule fires,
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
65 * returns its action. If no rule fires, return the default read mode.
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
66 */
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
67 FilterAction
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
68 Flt_checkFilters( const char *thisGrp, const char *newsgroups,
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
69 const Over *ov, FetchMode mode );
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
70
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
71 /*
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
72 * Build and access a filter
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
73 */
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
74 Filter *
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
75 new_Filter( void );
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
76
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
77 void
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
78 del_Filter( Filter *f );
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
79
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
80 FilterAction
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
81 Flt_action( const Filter *f );
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
82
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
83 int
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
84 Flt_nRules( const Filter *f );
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
85
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
86 Bool
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
87 Flt_getNewsgroups( void );
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
88
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
89 FilterRule
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
90 Flt_rule( const Filter *f, int ruleNo );
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
91
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
92 void
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
93 Flt_setAction( Filter *f, FilterAction action );
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
94
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
95 void
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
96 Flt_addRule( Filter *f, FilterRule rule );
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
97
8897b7e3b108 [svn] Add article filtering
bears
parents:
diff changeset
98 #endif /* FILTER_H */