mdbox-settings.c revision f93bfb6e6825ad31b9189a6664f12ccecb66a241
76b43e4417bab52e913da39b5f5bc2a130d3f149Timo Sirainen/* Copyright (c) 2006-2010 Dovecot authors, see the included COPYING file */
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen#include "lib.h"
345648b341f228bd7f0b89f8aa3ecb9c470d817eTimo Sirainen#include "settings-parser.h"
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen#include "mail-storage-settings.h"
d1414c09cf0d58ac983054e2f4e1a1f329272dcfTimo Sirainen#include "mdbox-settings.h"
5a2cb3d097a2d9a9e930af997e7bf3400a8d840dTimo Sirainen
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen#include <stddef.h>
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen#undef DEF
97c339398f1aba6f315b55a9b6ee6b020e33bea4Timo Sirainen#define DEF(type, name) \
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen { type, #name, offsetof(struct mdbox_settings, name), NULL }
16f46efe0e090fe6975acf012a61a160f4787985Andrey Panin
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainenstatic bool mdbox_settings_verify(void *_set, pool_t pool ATTR_UNUSED,
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen const char **error_r);
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainenstatic const struct setting_define mdbox_setting_defines[] = {
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen DEF(SET_SIZE, mdbox_rotate_size),
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen DEF(SET_TIME, mdbox_rotate_interval),
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen DEF(SET_UINT, mdbox_max_open_files),
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen SETTING_DEFINE_LIST_END
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen};
16f46efe0e090fe6975acf012a61a160f4787985Andrey Panin
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainenstatic const struct mdbox_settings mdbox_default_settings = {
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen .mdbox_rotate_size = 2*1024*1024,
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen .mdbox_rotate_interval = 0,
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen .mdbox_max_open_files = 64
d1414c09cf0d58ac983054e2f4e1a1f329272dcfTimo Sirainen};
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainenstatic const struct setting_parser_info mdbox_setting_parser_info = {
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen .module_name = "mdbox",
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen .defines = mdbox_setting_defines,
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen .defaults = &mdbox_default_settings,
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen .type_offset = (size_t)-1,
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen .struct_size = sizeof(struct mdbox_settings),
7242e1ce7803b83bc82e239ef111b47c1c72dd4bAndrey Panin
d1414c09cf0d58ac983054e2f4e1a1f329272dcfTimo Sirainen .parent_offset = (size_t)-1,
d1414c09cf0d58ac983054e2f4e1a1f329272dcfTimo Sirainen .parent = &mail_user_setting_parser_info,
d1414c09cf0d58ac983054e2f4e1a1f329272dcfTimo Sirainen
d1414c09cf0d58ac983054e2f4e1a1f329272dcfTimo Sirainen .check_func = mdbox_settings_verify
c57776c06ec99ba9b0dafdbf9475ea72ea8ca134Timo Sirainen};
d1414c09cf0d58ac983054e2f4e1a1f329272dcfTimo Sirainen
d1414c09cf0d58ac983054e2f4e1a1f329272dcfTimo Sirainen/* <settings checks> */
d1414c09cf0d58ac983054e2f4e1a1f329272dcfTimo Sirainenstatic bool mdbox_settings_verify(void *_set, pool_t pool ATTR_UNUSED,
d1414c09cf0d58ac983054e2f4e1a1f329272dcfTimo Sirainen const char **error_r)
d1414c09cf0d58ac983054e2f4e1a1f329272dcfTimo Sirainen{
e70d5895795732b8247ab9abb045b438e954bc46Timo Sirainen const struct mdbox_settings *set = _set;
e70d5895795732b8247ab9abb045b438e954bc46Timo Sirainen
e70d5895795732b8247ab9abb045b438e954bc46Timo Sirainen if (set->mdbox_max_open_files < 2) {
e70d5895795732b8247ab9abb045b438e954bc46Timo Sirainen *error_r = "mdbox_max_open_files must be at least 2";
e70d5895795732b8247ab9abb045b438e954bc46Timo Sirainen return FALSE;
e70d5895795732b8247ab9abb045b438e954bc46Timo Sirainen }
e70d5895795732b8247ab9abb045b438e954bc46Timo Sirainen return TRUE;
e70d5895795732b8247ab9abb045b438e954bc46Timo Sirainen}
e70d5895795732b8247ab9abb045b438e954bc46Timo Sirainen/* </settings checks> */
e70d5895795732b8247ab9abb045b438e954bc46Timo Sirainen
e70d5895795732b8247ab9abb045b438e954bc46Timo Sirainenconst struct setting_parser_info *mdbox_get_setting_parser_info(void)
e70d5895795732b8247ab9abb045b438e954bc46Timo Sirainen{
e70d5895795732b8247ab9abb045b438e954bc46Timo Sirainen return &mdbox_setting_parser_info;
648d24583c1574441c4fa0331a90bd4d6e7996c5Timo Sirainen}
e70d5895795732b8247ab9abb045b438e954bc46Timo Sirainen