Mercurial > noffle
view src/filter.h @ 131:3598fc9581c1 noffle
[svn] Added filtering
author | bears |
---|---|
date | Wed, 09 Aug 2000 22:30:58 +0100 |
parents | 8897b7e3b108 |
children | a4e9a20e50e5 |
line wrap: on
line source
/* filter.h Article filtering. $Id: filter.h 189 2000-08-09 21:19:17Z bears $ */ #ifndef FILTER_H #define FILTER_H #include <sys/types.h> #include <regex.h> #include "fetchlist.h" #include "over.h" /* The possible actions in a filter. */ typedef enum { FILTER_FULL, FILTER_XOVER, FILTER_THREAD, FILTER_DISCARD } FilterAction; /* Representation of a rule. */ typedef enum { RULE_NEWSGROUP, /* Wildmat data */ RULE_SUBJECT, /* Regex data */ RULE_FROM, RULE_MSGID, RULE_BYTES_LT, RULE_BYTES_EQ, RULE_BYTES_GT, /* Number data */ RULE_LINES_LT, RULE_LINES_EQ, RULE_LINES_GT, RULE_NOREFS_LT, RULE_NOREFS_EQ, RULE_NOREFS_GT, RULE_XPOSTS_LT, RULE_XPOSTS_EQ, RULE_XPOSTS_GT } FilterRuleType; typedef union { regex_t regex; unsigned long amount; char *grp; } FilterRuleData; typedef struct { FilterRuleType type; FilterRuleData data; } FilterRule; /* A single filter is a collection of rules with an action. */ typedef struct { int nRules; int maxRules; FilterRule *rules; FilterAction action; } Filter; /* Add a filter to the list of filters. */ void Flt_addFilter( const Filter *f ); /* * Run the rules over the supplied overview. If a specific rule fires, * returns its action. If no rule fires, return the default read mode. */ FilterAction Flt_checkFilters( const char *thisGrp, const char *newsgroups, const Over *ov, FetchMode mode ); /* * Build and access a filter */ Filter * new_Filter( void ); void del_Filter( Filter *f ); FilterAction Flt_action( const Filter *f ); int Flt_nRules( const Filter *f ); Bool Flt_getNewsgroups( void ); FilterRule Flt_rule( const Filter *f, int ruleNo ); void Flt_setAction( Filter *f, FilterAction action ); void Flt_addRule( Filter *f, FilterRule rule ); #endif /* FILTER_H */