/[imapfilter]/imapfilter/imapfilter.c
ViewVC logotype

Contents of /imapfilter/imapfilter.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.21 - (show annotations)
Fri Nov 9 23:43:33 2001 UTC (22 years, 4 months ago) by lefcha
Branch: MAIN
Changes since 1.20: +2 -2 lines
File MIME type: text/plain
Indent to K&R style.

1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4 #include <string.h>
5 #include <limits.h>
6 #include <errno.h>
7
8 #include "config.h"
9 #include "imapfilter.h"
10 #include "data.h"
11
12
13 extern account_t *accounts;
14 extern filter_t *filters;
15
16 unsigned int options; /* Program options. */
17 char logfile[PATH_MAX]; /* Log file. */
18
19
20 /*
21 * In the beginning there was main()...
22 */
23 int main(int argc, char *argv[])
24 {
25 int c, r;
26 char *confile = NULL; /* Configuration file. */
27 account_t *ca; /* Current account. */
28 mbox_t *cm; /* Current mailbox. */
29
30 options = OPTION_DETAILS_NORMAL;
31 *logfile = 0;
32
33 while ((c = getopt(argc, argv, "c:hl:qv")) != -1) {
34 switch (c) {
35 case 'c':
36 confile = optarg;
37 break;
38 case 'h':
39 usage();
40 exit(ERROR_UNDEFINED);
41 break;
42 case 'l':
43 strncat(logfile, optarg, PATH_MAX - 1);
44 break;
45 case 'q':
46 options &= OPTION_DETAILS_CLEAR;
47 options |= OPTION_DETAILS_QUIET;
48 break;
49 case 'v':
50 options &= OPTION_DETAILS_CLEAR;
51 options |= OPTION_DETAILS_VERBOSE;
52 break;
53 default:
54 usage();
55 exit(ERROR_UNDEFINED);
56 break;
57 }
58 }
59
60 read_config(confile);
61 open_logfile();
62
63 catch_signals();
64
65 for (ca = accounts; ca; ca = ca->next) {
66
67 #ifndef SSL_TLS
68 if (init_connection(ca->server, ca->port))
69 #else
70 if (init_connection(ca->server, ca->port, ca->ssl))
71 #endif
72 continue;
73
74 r = greeting_response();
75
76 if (r == RESPONSE_BYE || check_capabilities())
77 continue;
78
79 #ifdef DEBUG
80 test();
81 #endif
82
83 if (r != RESPONSE_PREAUTH && login(ca->username, ca->password))
84 continue;
85
86 for (cm = ca->mboxes; cm; cm = cm->next)
87 if (!*cm->filters)
88 mailbox_status(cm->name);
89 else if (!select_mailbox(cm->name)) {
90 apply_filters(cm->filters);
91 close_mailbox();
92 }
93 logout();
94
95 close_connection();
96
97 overwrite_password(ca->password);
98 }
99
100 close_logfile();
101
102 exit(0);
103 }
104
105
106 /*
107 * Print a very brief usage message.
108 */
109 void usage(void)
110 {
111 fprintf(stderr,
112 "usage: imapfilter [-hqv] [-c configfile] [-l logfile]\n");
113 }

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26