}
driver = t_strdup_until(ns->set->location, p);
storage->location = p_strdup(_storage->pool, ns->set->location);
+ storage->unexpanded_location =
+ p_strdup(_storage->pool, ns->unexpanded_set->location);
storage->storage_class = mail_storage_find_class(driver);
if (storage->storage_class == NULL) {
*error_r = t_strconcat("Unknown shared storage driver: ",
};
struct var_expand_table *tab;
struct mail_namespace *new_ns, *ns = *_ns;
- struct mail_namespace_settings *ns_set;
+ struct mail_namespace_settings *ns_set, *unexpanded_ns_set;
struct mail_user *owner;
const char *domain = NULL, *username = NULL, *userdomain = NULL;
const char *name, *p, *next, **dest, *error;
ns_set->list = "yes";
new_ns->set = ns_set;
+ unexpanded_ns_set =
+ p_new(user->pool, struct mail_namespace_settings, 1);
+ *unexpanded_ns_set = *ns_set;
+ unexpanded_ns_set->location =
+ p_strdup(user->pool, storage->unexpanded_location);
+ new_ns->unexpanded_set = unexpanded_ns_set;
+
if (mail_storage_create(new_ns, NULL, _storage->flags, &error) < 0) {
mailbox_list_set_critical(list, "Namespace '%s': %s",
new_ns->prefix, error);