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