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

Annotation of /imapfilter/filter.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (hide annotations)
Mon Jan 26 21:35:13 2004 UTC (20 years, 2 months ago) by lefcha
Branch: MAIN
Changes since 1.3: +1 -0 lines
File MIME type: text/plain
Cosmetic changes.

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

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26