]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Added mail_namespace_find_unalias()
authorTimo Sirainen <tss@iki.fi>
Fri, 16 Sep 2011 09:39:19 +0000 (12:39 +0300)
committerTimo Sirainen <tss@iki.fi>
Fri, 16 Sep 2011 09:39:19 +0000 (12:39 +0300)
src/lib-storage/mail-namespace.c
src/lib-storage/mail-namespace.h

index d092808289b197b5c851663d0a3e1398e1a291d4..314b28e20dccc4992c0d48decdbc285432ef9437 100644 (file)
@@ -580,6 +580,23 @@ mail_namespace_find(struct mail_namespace *namespaces, const char *mailbox)
        return ns;
 }
 
+struct mail_namespace *
+mail_namespace_find_unalias(struct mail_namespace *namespaces,
+                           const char **mailbox)
+{
+       struct mail_namespace *ns;
+       const char *storage_name;
+
+       ns = mail_namespace_find(namespaces, *mailbox);
+       if (ns->alias_for != NULL) {
+               storage_name =
+                       mailbox_list_get_storage_name(ns->list, *mailbox);
+               ns = ns->alias_for;
+               *mailbox = mailbox_list_get_vname(ns->list, storage_name);
+       }
+       return ns;
+}
+
 struct mail_namespace *
 mail_namespace_find_visible(struct mail_namespace *namespaces,
                            const char *mailbox)
index 74191620607d2e5429613cdda5ffaa0dc5f34ab5..6cafab74fbbd5e128f8b7150fa78f78e97f6b49e 100644 (file)
@@ -108,6 +108,12 @@ char mail_namespaces_get_root_sep(struct mail_namespace *namespaces)
    namespace could be found. */
 struct mail_namespace *
 mail_namespace_find(struct mail_namespace *namespaces, const char *mailbox);
+/* Find namespace for mailbox and return it. If the namespace has alias_for
+   set, return that namespace instead and change mailbox name to be a valid
+   inside it. */
+struct mail_namespace *
+mail_namespace_find_unalias(struct mail_namespace *namespaces,
+                           const char **mailbox);
 /* Like above, but ignore hidden namespaces. */
 struct mail_namespace *
 mail_namespace_find_visible(struct mail_namespace *namespaces,