/[imapfilter]/imapfilter/filter.h
ViewVC logotype

Annotation of /imapfilter/filter.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (hide annotations)
Fri Aug 8 12:29:43 2003 UTC (20 years, 7 months ago) by lefcha
Branch: MAIN
Changes since 1.2: +1 -1 lines
File MIME type: text/plain
Added header includes to compile on systems that don't conform to IEEE Std 1003.1-2001 (POSIX.1).

1 lefcha 1.1 #ifndef FILTER_H
2     #define FILTER_H
3    
4 lefcha 1.3 #include <sys/types.h> /* IEEE Std 1003.1-2001 non-conformance. */
5 lefcha 1.1 #include <regex.h>
6    
7     #include "account.h"
8    
9    
10     /*
11     * Mode for masks that comprise a filter. So if a filter is of AND type then
12     * as default masks are ANDed.
13     */
14     #define FILTER_MODE_OR 1
15     #define FILTER_MODE_AND 2
16    
17     /* Action to do in case of filter matching. */
18     #define FILTER_ACTION_DELETE 1
19     #define FILTER_ACTION_COPY 2
20     #define FILTER_ACTION_MOVE 3
21     #define FILTER_ACTION_RCOPY 4
22     #define FILTER_ACTION_RMOVE 5
23     #define FILTER_ACTION_FLAG_REPLACE 6
24     #define FILTER_ACTION_FLAG_ADD 7
25     #define FILTER_ACTION_FLAG_REMOVE 8
26     #define FILTER_ACTION_LIST 9
27    
28     /* Message flags to replace/add/remove. */
29     #define MESSAGE_FLAG_NONE 0x00
30     #define MESSAGE_FLAG_SEEN 0x01
31     #define MESSAGE_FLAG_ANSWERED 0x02
32     #define MESSAGE_FLAG_FLAGGED 0x04
33     #define MESSAGE_FLAG_DELETED 0x08
34     #define MESSAGE_FLAG_DRAFT 0x10
35    
36     /* Type of mask. This overrides the default filter mode (AND/OR). */
37     #define MASK_TYPE_OR 1
38     #define MASK_TYPE_AND 2
39    
40     /* Type of mask match according to the four different regular expressions. */
41     #define MASK_MATCH_1 1
42     #define MASK_MATCH_2 2
43     #define MASK_MATCH_3 3
44     #define MASK_MATCH_4 4
45    
46     /* String length of action's arguments. */
47     #define ARGS_LEN 256
48    
49     /* String length of mask's body. */
50     #define MASK_BODY_LEN 256
51    
52     /* Maximum filters assigned to a mailbox. */
53     #define MBOX_FILTERS_MAX 64
54    
55    
56     /* Filter. */
57     typedef struct filter {
58     char key[KEY_LEN]; /* Alias of filter. */
59     unsigned int mode; /* AND/OR mode. */
60    
61     struct { /* What to do on filter match. */
62     unsigned int type; /* Action. */
63     account_t *raccount; /* Remote account to rcopy/rmove
64     * message. */
65     char destmbox[MBOX_NAME_LEN]; /* Destination mailbox. */
66     unsigned int msgflags; /* Message flags to
67     * replace/add/remove. */
68     char args[ARGS_LEN]; /* Action's arguments. */
69     } action;
70    
71     struct mask *masks; /* Masks comprising the filter. */
72     unsigned int masknum; /* Total number of masks. */
73     unsigned int masklen; /* Total length of body of masks. */
74    
75     struct filter *left, *right; /* Left/right node of tree. */
76     } filter_t;
77    
78     /* Mask. */
79     typedef struct mask {
80     char body[MASK_BODY_LEN]; /* Body of mask. */
81     unsigned int type; /* AND/OR type. */
82     struct mask *next; /* Next node of linked list. */
83     } mask_t;
84    
85    
86     /* filter.c */
87     int set_filter(char *line, regmatch_t * match);
88     int set_action(char *line, regmatch_t * match);
89     int set_mask(char *line, regmatch_t * match, int mmt);
90     int set_job(char *line, regmatch_t * match);
91    
92    
93     #endif /* FILTER_H */

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26