mdbox-settings.c revision 9ff39148453aa6db8887ec1cde46bd7489109c09
76b43e4417bab52e913da39b5f5bc2a130d3f149Timo Sirainen/* Copyright (c) 2006-2010 Dovecot authors, see the included COPYING file */
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen#include "lib.h"
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen#include "settings-parser.h"
eff552f5fdc275c940c4c709eeeddb833bc51b40Timo Sirainen#include "mail-storage-settings.h"
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen#include "mdbox-settings.h"
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen#include <stddef.h>
12aad74464367f7e8be11eafe1af985bf7b1adecTimo Sirainen
12aad74464367f7e8be11eafe1af985bf7b1adecTimo Sirainen#undef DEF
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen#define DEF(type, name) \
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen { type, #name, offsetof(struct mdbox_settings, name), NULL }
b42f37ae6f65ed986315b6885568d32115e589b1Timo Sirainen
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainenstatic bool mdbox_settings_verify(void *_set, pool_t pool ATTR_UNUSED,
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen const char **error_r);
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainenstatic const struct setting_define mdbox_setting_defines[] = {
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen DEF(SET_SIZE, mdbox_rotate_size),
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen DEF(SET_SIZE, mdbox_rotate_min_size),
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen DEF(SET_TIME, mdbox_rotate_interval),
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen DEF(SET_UINT, mdbox_max_open_files),
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen DEF(SET_UINT, mdbox_purge_min_percentage),
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen SETTING_DEFINE_LIST_END
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen};
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainenstatic const struct mdbox_settings mdbox_default_settings = {
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen .mdbox_rotate_size = 2*1024*1024,
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen .mdbox_rotate_min_size = 16*1024,
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen .mdbox_rotate_interval = 0,
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen .mdbox_max_open_files = 64,
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen .mdbox_purge_min_percentage = 0
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen};
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainenstatic const struct setting_parser_info mdbox_setting_parser_info = {
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen .module_name = "mdbox",
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen .defines = mdbox_setting_defines,
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen .defaults = &mdbox_default_settings,
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen .type_offset = (size_t)-1,
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen .struct_size = sizeof(struct mdbox_settings),
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen .parent_offset = (size_t)-1,
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen .parent = &mail_user_setting_parser_info,
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen .check_func = mdbox_settings_verify
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen};
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen/* <settings checks> */
1f1e81aab38d833d1c9cdc244c91fd762e0080d4Timo Sirainenstatic bool mdbox_settings_verify(void *_set, pool_t pool ATTR_UNUSED,
12aad74464367f7e8be11eafe1af985bf7b1adecTimo Sirainen const char **error_r)
12aad74464367f7e8be11eafe1af985bf7b1adecTimo Sirainen{
12aad74464367f7e8be11eafe1af985bf7b1adecTimo Sirainen const struct mdbox_settings *set = _set;
2521482f3f897c83f7d5a2f9e17fe99fa4ba2cbeTimo Sirainen
2521482f3f897c83f7d5a2f9e17fe99fa4ba2cbeTimo Sirainen if (set->mdbox_max_open_files < 2) {
12aad74464367f7e8be11eafe1af985bf7b1adecTimo Sirainen *error_r = "mdbox_max_open_files must be at least 2";
137ea7ca34005345aa2304a940149b7f3774d727Timo Sirainen return FALSE;
137ea7ca34005345aa2304a940149b7f3774d727Timo Sirainen }
137ea7ca34005345aa2304a940149b7f3774d727Timo Sirainen return TRUE;
2521482f3f897c83f7d5a2f9e17fe99fa4ba2cbeTimo Sirainen}
2521482f3f897c83f7d5a2f9e17fe99fa4ba2cbeTimo Sirainen/* </settings checks> */
2521482f3f897c83f7d5a2f9e17fe99fa4ba2cbeTimo Sirainen
2521482f3f897c83f7d5a2f9e17fe99fa4ba2cbeTimo Sirainenconst struct setting_parser_info *mdbox_get_setting_parser_info(void)
2521482f3f897c83f7d5a2f9e17fe99fa4ba2cbeTimo Sirainen{
12aad74464367f7e8be11eafe1af985bf7b1adecTimo Sirainen return &mdbox_setting_parser_info;
12aad74464367f7e8be11eafe1af985bf7b1adecTimo Sirainen}
12aad74464367f7e8be11eafe1af985bf7b1adecTimo Sirainen