dbox-storage.c revision c58906589cafc32df4c04ffbef933baadd3f2276
c25356d5978632df6203437e1953bcb29e0c736fTimo Sirainen/* Copyright (C) 2005-2007 Timo Sirainen */
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen#define CREATE_MODE 0770 /* umask() should limit it more */
965ed6ea3fc8f7637bd0d159d2fdb283a191ce34Timo Sirainen/* How often to touch the uidlist lock file when using KEEP_LOCKED flag */
965ed6ea3fc8f7637bd0d159d2fdb283a191ce34Timo Sirainenconst struct dotlock_settings default_uidlist_dotlock_set = {
a399486f2d8d5bed51bc6344baba61a7f2b0dcdbTimo Sirainenconst struct dotlock_settings default_file_dotlock_set = {
965ed6ea3fc8f7637bd0d159d2fdb283a191ce34Timo Sirainenstatic const struct dotlock_settings default_new_file_dotlock_set = {
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainenstatic MODULE_CONTEXT_DEFINE_INIT(dbox_mailbox_list_module,
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainendbox_list_delete_mailbox(struct mailbox_list *list, const char *name);
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainenstatic int dbox_list_iter_is_mailbox(struct mailbox_list_iterate_context *ctx,
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainendbox_storage_is_valid_existing_name(struct mailbox_list *list, const char *name)
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen struct dbox_storage *storage = DBOX_LIST_CONTEXT(list);
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen const char *p;
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen if (!storage->list_module_ctx.super.is_valid_existing_name(list, name))
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen /* Don't allow the mailbox name to end in dbox-Mails */
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainendbox_storage_is_valid_create_name(struct mailbox_list *list, const char *name)
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen struct dbox_storage *storage = DBOX_LIST_CONTEXT(list);
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen const char *const *tmp;
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen if (!storage->list_module_ctx.super.is_valid_create_name(list, name))
c4457e497e01b57565d24da624968699b166e02aTimo Sirainen /* Don't allow creating mailboxes under dbox-Mails */
965ed6ea3fc8f7637bd0d159d2fdb283a191ce34Timo Sirainen for (tmp = t_strsplit(name, "/"); *tmp != NULL; tmp++) {
965ed6ea3fc8f7637bd0d159d2fdb283a191ce34Timo Sirainendbox_get_list_settings(struct mailbox_list_settings *list_set,
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen const char *data, enum mail_storage_flags flags)
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen bool debug = (flags & MAIL_STORAGE_FLAG_DEBUG) != 0;
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen const char *p;
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen list_set->subscription_fname = DBOX_SUBSCRIPTION_FILE_NAME;
965ed6ea3fc8f7637bd0d159d2fdb283a191ce34Timo Sirainen /* we won't do any guessing for this format. */
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen /* <root dir> [:INDEX=<dir>] */
4261a8b43792dc4db4b39e6910319835b7450e84Timo Sirainen } while (p != NULL);
ebfcfd258acc89633c47d9c3b0b40a1a3f75cdcbTimo Sirainen /* strip trailing '/' */
4261a8b43792dc4db4b39e6910319835b7450e84Timo Sirainen list_set->root_dir = t_strndup(list_set->root_dir, len-1);
const char *error;
const char *path;
if (debug)
return FALSE;
if (debug)
return FALSE;
return TRUE;
const char *error;
path);
static struct mailbox *
return NULL;
return NULL;
return NULL;
mbox);
static struct mailbox *
const char *path;
return NULL;
return NULL;
path);
return NULL;
const char *name,
const char *path;
name));
if (p == NULL)
const char *mail_path;
t_push();
ret = 0;
t_pop();
return ret;
static void dbox_class_init(void)
static void dbox_class_deinit(void)
NULL,