imap-settings.c revision b215a8a123623782554a83f3025ef4e771bd8f01
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen/* Copyright (c) 2005-2008 Dovecot authors, see the included COPYING file */
b215a8a123623782554a83f3025ef4e771bd8f01Timo Sirainenstatic bool imap_settings_check(void *_set, const char **error_r);
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen { type, #name, offsetof(struct imap_settings, name), NULL }
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen { SET_DEFLIST, name, offsetof(struct imap_settings, field), defines }
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenstatic struct setting_define imap_setting_defines[] = {
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenstatic struct imap_settings imap_default_settings = {
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen /* RFC-2683 recommends at least 8000 bytes. Some clients however don't
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen break large message sets to multiple commands, so we're pretty
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen liberal by default. */
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen MEMBER(imap_client_workarounds) "outlook-idle",
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenstruct setting_parser_info imap_setting_parser_info = {
b215a8a123623782554a83f3025ef4e771bd8f01Timo Sirainen MEMBER(struct_size) sizeof(struct imap_settings),
ad0f1d2f2e7f1d42b2de403b04a0ffe1675109ccTimo Sirainenstatic void fix_base_path(struct imap_settings *set, const char **str)
ad0f1d2f2e7f1d42b2de403b04a0ffe1675109ccTimo Sirainen if (*str != NULL && **str != '\0' && **str != '/') {
b215a8a123623782554a83f3025ef4e771bd8f01Timo Sirainen/* <settings checks> */
b215a8a123623782554a83f3025ef4e771bd8f01Timo Sirainenstatic bool imap_settings_check(void *_set, const char **error_r)
b215a8a123623782554a83f3025ef4e771bd8f01Timo Sirainen access(set->mail_plugin_dir, R_OK | X_OK) < 0) {
b215a8a123623782554a83f3025ef4e771bd8f01Timo Sirainen "mail_plugin_dir: access(%s) failed: %m",
b215a8a123623782554a83f3025ef4e771bd8f01Timo Sirainen/* </settings checks> */
b215a8a123623782554a83f3025ef4e771bd8f01Timo Sirainenparse_expand_vars(struct setting_parser_context *parser, const char *value)
b215a8a123623782554a83f3025ef4e771bd8f01Timo Sirainen const char *const *expanded;
b215a8a123623782554a83f3025ef4e771bd8f01Timo Sirainen settings_parse_set_keys_expandeded(parser, settings_pool, expanded);
b215a8a123623782554a83f3025ef4e771bd8f01Timo Sirainen /* settings from userdb are in the VARS_EXPANDED list. for each
b215a8a123623782554a83f3025ef4e771bd8f01Timo Sirainen unknown setting in the list assume it's a plugin setting. */
b215a8a123623782554a83f3025ef4e771bd8f01Timo Sirainen if (settings_parse_is_valid_key(parser, *expanded))
b215a8a123623782554a83f3025ef4e771bd8f01Timo Sirainen settings_parse_line(parser, t_strconcat("plugin/", *expanded,
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenvoid imap_settings_read(const struct imap_settings **set_r,
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen static const struct setting_parser_info *roots[] = {
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen settings_pool = pool_alloconly_create("imap settings", 2048);
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen mail_storage_namespace_defines_init(settings_pool);
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen parser = settings_parser_init_list(settings_pool,