Mercurial > dovecot > core-2.2
changeset 12931:dafc2dcc1a64
lib-storage: Added mail_namespaces_init_location() for creating a single namespace for user.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 08 Apr 2011 17:26:14 +0300 |
parents | 18e87d50a10a |
children | 1f545a4a1ffb |
files | src/lib-storage/mail-namespace.c src/lib-storage/mail-namespace.h |
diffstat | 2 files changed, 21 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/mail-namespace.c Fri Apr 08 16:41:26 2011 +0300 +++ b/src/lib-storage/mail-namespace.c Fri Apr 08 17:26:14 2011 +0300 @@ -272,12 +272,10 @@ int mail_namespaces_init(struct mail_user *user, const char **error_r) { - const struct mail_storage_settings *mail_set, *unexpanded_mail_set; + const struct mail_storage_settings *mail_set; struct mail_namespace_settings *const *ns_set; struct mail_namespace_settings *const *unexpanded_ns_set; struct mail_namespace *namespaces, *ns, **ns_p; - struct mail_namespace_settings *inbox_set, *unexpanded_inbox_set; - const char *error, *driver, *location_source; unsigned int i, count, count2; i_assert(user->initialized); @@ -321,6 +319,19 @@ } /* no namespaces defined, create a default one */ + return mail_namespaces_init_location(user, NULL, error_r); +} + +int mail_namespaces_init_location(struct mail_user *user, const char *location, + const char **error_r) +{ + struct mail_namespace_settings *inbox_set, *unexpanded_inbox_set; + struct mail_namespace *ns; + const struct mail_storage_settings *mail_set, *unexpanded_mail_set; + const char *error, *driver, *location_source; + + i_assert(location == NULL || *location != '\0'); + ns = i_new(struct mail_namespace, 1); ns->refcount = 1; ns->type = NAMESPACE_PRIVATE; @@ -336,7 +347,11 @@ *unexpanded_inbox_set = *inbox_set; driver = NULL; - if (*mail_set->mail_location != '\0') { + mail_set = mail_user_set_get_storage_set(user); + if (location != NULL) { + inbox_set->location = p_strdup(user->pool, location); + location_source = "mail_location parameter"; + } else if (*mail_set->mail_location != '\0') { unexpanded_mail_set = mail_user_set_get_driver_settings( user->set_info, user->unexpanded_set, MAIL_STORAGE_SET_DRIVER_NAME);
--- a/src/lib-storage/mail-namespace.h Fri Apr 08 16:41:26 2011 +0300 +++ b/src/lib-storage/mail-namespace.h Fri Apr 08 17:26:14 2011 +0300 @@ -74,6 +74,8 @@ }; int mail_namespaces_init(struct mail_user *user, const char **error_r); +int mail_namespaces_init_location(struct mail_user *user, const char *location, + const char **error_r); struct mail_namespace *mail_namespaces_init_empty(struct mail_user *user); /* Deinitialize all namespaces. mail_user_deinit() calls this automatically for user's namespaces. */