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

Contents of /imapfilter/imapfilter.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.19 - (show annotations)
Fri Nov 9 17:32:43 2001 UTC (22 years, 4 months ago) by lefcha
Branch: MAIN
Changes since 1.18: +4 -5 lines
File MIME type: text/plain
If a server fails continue to another.

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 for (ca = accounts; ca; ca = ca->next) {
64
65 #ifndef SSL_TLS
66 if (init_connection(ca->server, ca->port))
67 #else
68 if (init_connection(ca->server, ca->port, ca->ssl))
69 #endif
70 continue;
71
72 r = greeting_response();
73
74 if (r == RESPONSE_BYE || check_capabilities())
75 continue;
76
77 #ifdef DEBUG
78 test();
79 #endif
80
81 if (r != RESPONSE_PREAUTH && login(ca->username, ca->password))
82 continue;
83
84 for (cm = ca->mboxes; cm; cm = cm->next)
85 if (!*cm->filters)
86 mailbox_status(cm->name);
87 else if (!select_mailbox(cm->name)) {
88 apply_filters(cm->filters);
89 close_mailbox();
90 }
91 logout();
92
93 close_connection();
94
95 overwrite_password(ca->password);
96 }
97
98 close_logfile();
99
100 exit(0);
101 }
102
103
104 /*
105 * Print a very brief usage message.
106 */
107 void usage(void)
108 {
109 fprintf(stderr,
110 "usage: imapfilter [-hqv] [-c configfile] [-l logfile]\n");
111 }

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26