Mercurial > dovecot > original-hg > dovecot-1.2
comparison src/lib-storage/mail-storage.c @ 1138:340dea0150bf HEAD
Added client_workarounds setting, with currently one workaround for OE6.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 11 Feb 2003 12:30:29 +0200 |
parents | fd8888f6f037 |
children | 058f6c26f405 |
comparison
equal
deleted
inserted
replaced
1137:5b5716af5aa8 | 1138:340dea0150bf |
---|---|
2 | 2 |
3 #include "lib.h" | 3 #include "lib.h" |
4 #include "ioloop.h" | 4 #include "ioloop.h" |
5 #include "mail-storage.h" | 5 #include "mail-storage.h" |
6 | 6 |
7 #include <stdlib.h> | |
7 #include <time.h> | 8 #include <time.h> |
8 #include <ctype.h> | 9 #include <ctype.h> |
9 | 10 |
10 /* Message to show to users when critical error occurs */ | 11 /* Message to show to users when critical error occurs */ |
11 #define CRITICAL_MSG "Internal error [%Y-%m-%d %H:%M:%S]" | 12 #define CRITICAL_MSG "Internal error [%Y-%m-%d %H:%M:%S]" |
13 struct mail_storage_list { | 14 struct mail_storage_list { |
14 struct mail_storage_list *next; | 15 struct mail_storage_list *next; |
15 struct mail_storage *storage; | 16 struct mail_storage *storage; |
16 }; | 17 }; |
17 | 18 |
19 struct client_workaround_list { | |
20 const char *name; | |
21 enum client_workarounds num; | |
22 }; | |
23 | |
24 struct client_workaround_list client_workaround_list[] = { | |
25 { "oe6-fetch-no-newmail", WORKAROUND_OE6_FETCH_NO_NEWMAIL }, | |
26 { NULL, 0 } | |
27 }; | |
28 | |
18 static struct mail_storage_list *storages = NULL; | 29 static struct mail_storage_list *storages = NULL; |
30 enum client_workarounds client_workarounds = 0; | |
31 | |
32 void mail_storage_init(void) | |
33 { | |
34 struct client_workaround_list *list; | |
35 const char *env; | |
36 const char *const *str; | |
37 | |
38 env = getenv("CLIENT_WORKAROUNDS"); | |
39 if (env == NULL) | |
40 return; | |
41 | |
42 for (str = t_strsplit(env, " "); *str != NULL; str++) { | |
43 list = client_workaround_list; | |
44 for (; list->name != NULL; list++) { | |
45 if (strcasecmp(*str, list->name) == 0) | |
46 client_workarounds |= list->num; | |
47 else | |
48 i_fatal("Unknown client workaround: %s", *str); | |
49 } | |
50 } | |
51 } | |
19 | 52 |
20 void mail_storage_class_register(struct mail_storage *storage_class) | 53 void mail_storage_class_register(struct mail_storage *storage_class) |
21 { | 54 { |
22 struct mail_storage_list *list, **pos; | 55 struct mail_storage_list *list, **pos; |
23 | 56 |