1 /*
2 ** Copyright 2000 Double Precision, Inc.
3 ** See COPYING for distribution information.
4 */
5
6 #include "maildirfilter.h"
7 #include "maildirfiltertypelist.h"
8 #include <stdio.h>
9 #include <string.h>
10 #include <unistd.h>
11
12 static const char rcsid[]="$Id: testmaildirfilter.c,v 1.5 2003/01/05 03:32:47 mrsam Exp $";
13
main(int argc,char ** argv)14 int main(int argc, char **argv)
15 {
16 const char *name;
17 enum maildirfiltertype type;
18 const char *header;
19 const char *value;
20 const char *folder;
21 int errcode, i;
22 struct maildirfilter mf;
23 struct maildirfilterrule *r;
24 int flags=0;
25
26 if (argc < 6)
27 {
28 fprintf(stderr, "Invalid args\n");
29 return (1);
30 }
31
32 name=argv[1];
33
34 value=argv[2];
35 if (*value == '-')
36 {
37 flags |= MFR_DOESNOT;
38 ++value;
39 }
40 if (*value == '/')
41 {
42 flags |= MFR_BODY;
43 ++value;
44 }
45
46 for (i=0; typelist[i].name; i++)
47 if (strcasecmp(typelist[i].name, value) == 0)
48 break;
49 if (!typelist[i].name)
50 {
51 fprintf(stderr, "unknown op: %s\n", argv[2]);
52 return (1);
53 }
54 type=typelist[i].type;
55 header=argv[3];
56 value=argv[4];
57 folder=argv[5];
58
59 memset(&mf, 0, sizeof(mf));
60
61 errcode=maildir_filter_loadrules(&mf, "testrules");
62 if (errcode && errcode != MF_LOADNOTFOUND)
63 {
64 fprintf(stderr, "Error loading testrules: %d\n", errcode);
65 return (1);
66 }
67
68 r=maildir_filter_appendrule(&mf, name, type, flags,
69 header, value, folder, "", &errcode);
70
71 if (!r)
72 {
73 fprintf(stderr, "Error appending %s: %d\n", name, errcode);
74 return (1);
75 }
76
77 unlink("maildirsize");
78 errcode=maildir_filter_saverules(&mf, "testrules2", ".", "Maildir", "nobody@example.com");
79 if (errcode)
80 {
81 fprintf(stderr, "Error saving testrules2: %d\n", errcode);
82 return (1);
83 }
84 rename("testrules2", "testrules");
85 printf("Added %s\n", name);
86 return (0);
87 }
88