]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Added mailbox_get_path_to() wrapper for mailbox_list_get_path().
authorTimo Sirainen <tss@iki.fi>
Tue, 25 Sep 2012 17:15:58 +0000 (20:15 +0300)
committerTimo Sirainen <tss@iki.fi>
Tue, 25 Sep 2012 17:15:58 +0000 (20:15 +0300)
Changed the code to use as much of mailbox_get_path_to() and
mailbox_get_path() as possible.

22 files changed:
src/indexer/Makefile.am
src/indexer/master-connection.c
src/lib-storage/index/cydir/cydir-mail.c
src/lib-storage/index/cydir/cydir-save.c
src/lib-storage/index/cydir/cydir-sync.c
src/lib-storage/index/dbox-common/dbox-storage.c
src/lib-storage/index/dbox-single/sdbox-file.c
src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c
src/lib-storage/index/index-rebuild.c
src/lib-storage/index/index-storage.c
src/lib-storage/index/index-sync-pvt.c
src/lib-storage/index/index-sync.c
src/lib-storage/index/maildir/maildir-keywords.c
src/lib-storage/index/maildir/maildir-sync-index.c
src/lib-storage/index/maildir/maildir-uidlist.c
src/lib-storage/index/maildir/maildir-util.c
src/lib-storage/index/mbox/mbox-storage.c
src/lib-storage/mail-storage-private.h
src/lib-storage/mail-storage.c
src/plugins/acl/doveadm-acl.c
src/plugins/fts-squat/fts-backend-squat.c
src/plugins/quota/quota-fs.c

index 36dfda4a77cb28bb1df39181aa134567a018f1b9..6781bf73329e4b9c0b2146d969305af19b505575 100644 (file)
@@ -7,6 +7,7 @@ AM_CPPFLAGS = \
        -I$(top_srcdir)/src/lib-master \
        -I$(top_srcdir)/src/lib-settings \
        -I$(top_srcdir)/src/lib-mail \
+       -I$(top_srcdir)/src/lib-index \
        -I$(top_srcdir)/src/lib-storage \
        -DPKG_RUNDIR=\""$(rundir)"\"
 
index 4658884a6cacc861b2ce4cbfc97304f32bec641e..361e210191a2813099b138c7535a7fcbd3997a46 100644 (file)
@@ -9,7 +9,7 @@
 #include "master-service.h"
 #include "master-service-settings.h"
 #include "mail-namespace.h"
-#include "mail-storage.h"
+#include "mail-storage-private.h"
 #include "mail-storage-service.h"
 #include "mail-search-build.h"
 #include "master-connection.h"
@@ -130,14 +130,14 @@ index_mailbox(struct master_connection *conn, struct mail_user *user,
                return -1;
        }
 
-       path = mailbox_list_get_path(ns->list, mailbox,
-                                    MAILBOX_LIST_PATH_TYPE_INDEX);
+       box = mailbox_alloc(ns->list, mailbox, 0);
+       path = mailbox_get_path_to(box, MAILBOX_LIST_PATH_TYPE_INDEX);
        if (*path == '\0') {
                i_info("Indexes disabled for Mailbox %s, skipping", mailbox);
+               mailbox_free(&box);
                return 0;
        }
-
-       box = mailbox_alloc(ns->list, mailbox, 0);
+       
        if (max_recent_msgs != 0) {
                /* index only if there aren't too many recent messages.
                   don't bother syncing the mailbox, that alone can take a
index 52ab22f5486225050b24d02aabaf0fa54188e4b7..8796f16d0059cd4335a423d8ab616dd567916e34 100644 (file)
@@ -13,8 +13,7 @@ static const char *cydir_mail_get_path(struct mail *mail)
 {
        const char *dir;
 
-       dir = mailbox_list_get_path(mail->box->list, mail->box->name,
-                                   MAILBOX_LIST_PATH_TYPE_MAILBOX);
+       dir = mailbox_get_path(mail->box);
        return t_strdup_printf("%s/%u.", dir, mail->uid);
 }
 
index 8b1428933d5c08e547fc4ebf5a9bc8a3077fa4e1..fca909167618220ea4c52a1cddf41c087f028af7 100644 (file)
@@ -50,8 +50,7 @@ cydir_get_save_path(struct cydir_save_context *ctx, unsigned int num)
 {
        const char *dir;
 
-       dir = mailbox_list_get_path(ctx->mbox->box.list, ctx->mbox->box.name,
-                                   MAILBOX_LIST_PATH_TYPE_MAILBOX);
+       dir = mailbox_get_path(&ctx->mbox->box);
        return t_strdup_printf("%s/%s.%u", dir, ctx->tmp_basename, num);
 }
 
@@ -267,8 +266,7 @@ int cydir_transaction_save_commit_pre(struct mail_save_context *_ctx)
                                      &_t->changes->saved_uids);
        _t->changes->uid_validity = ctx->sync_ctx->uid_validity;
 
-       dir = mailbox_list_get_path(ctx->mbox->box.list, ctx->mbox->box.name,
-                                   MAILBOX_LIST_PATH_TYPE_MAILBOX);
+       dir = mailbox_get_path(&ctx->mbox->box);
 
        src_path = t_str_new(256);
        str_printfa(src_path, "%s/%s.", dir, ctx->tmp_basename);
index a444c7ce6db2976df12e7a52fa443aa280edd09d..3a57df7ce4008e11fe58c52ed8df02235ff05538 100644 (file)
@@ -19,11 +19,8 @@ static void cydir_sync_set_uidvalidity(struct cydir_sync_context *ctx)
 static string_t *cydir_get_path_prefix(struct cydir_mailbox *mbox)
 {
        string_t *path = str_new(default_pool, 256);
-       const char *dir;
 
-       dir = mailbox_list_get_path(mbox->box.list, mbox->box.name,
-                                   MAILBOX_LIST_PATH_TYPE_MAILBOX);
-       str_append(path, dir);
+       str_append(path, mailbox_get_path(&mbox->box));
        str_append_c(path, '/');
        return path;
 }
index 46ffa0d478ed5e0c5b9f6bbd16022cbc3fa1b0e4..db818a113a3785342bcce008303c010e83b5a5cd 100644 (file)
@@ -139,8 +139,7 @@ void dbox_notify_changes(struct mailbox *box)
        if (box->notify_callback == NULL)
                index_mailbox_check_remove_all(box);
        else {
-               dir = mailbox_list_get_path(box->list, box->name,
-                                           MAILBOX_LIST_PATH_TYPE_INDEX);
+               dir = mailbox_get_path_to(box, MAILBOX_LIST_PATH_TYPE_INDEX);
                path = t_strdup_printf("%s/"DBOX_INDEX_PREFIX".log", dir);
                index_mailbox_check_add(box, path);
        }
@@ -252,8 +251,7 @@ int dbox_mailbox_create(struct mailbox *box,
 
        /* if alt path already exists and contains files, rebuild storage so
           that we don't start overwriting files. */
-       alt_path = mailbox_list_get_path(box->list, box->name,
-                                        MAILBOX_LIST_PATH_TYPE_ALT_MAILBOX);
+       alt_path = mailbox_get_path_to(box, MAILBOX_LIST_PATH_TYPE_ALT_MAILBOX);
        if (alt_path != NULL && stat(alt_path, &st) == 0) {
                ret = dir_is_empty(box->storage, alt_path);
                if (ret < 0)
index ae04d04c78cbf57c2c3ca194e229d204e6ec12aa..7bf24f1a784d4ce5228a698041b16bb74011f128 100644 (file)
@@ -25,8 +25,7 @@ static void sdbox_file_init_paths(struct sdbox_file *file, const char *fname)
        file->file.primary_path =
                i_strdup_printf("%s/%s", mailbox_get_path(box), fname);
 
-       alt_path = mailbox_list_get_path(box->list, box->name,
-                                        MAILBOX_LIST_PATH_TYPE_ALT_MAILBOX);
+       alt_path = mailbox_get_path_to(box, MAILBOX_LIST_PATH_TYPE_ALT_MAILBOX);
        if (alt_path != NULL)
                file->file.alt_path = i_strdup_printf("%s/%s", alt_path, fname);
 }
index 734c3d13f30a93e8248606088237045b2a7aba32..7044200ab5ca88c311b4b0cefee684411408432a 100644 (file)
@@ -159,8 +159,8 @@ sdbox_sync_index_rebuild_singles(struct index_rebuild_context *ctx)
        int ret = 0;
 
        path = mailbox_get_path(ctx->box);
-       alt_path = mailbox_list_get_path(ctx->box->list, ctx->box->name,
-                                        MAILBOX_LIST_PATH_TYPE_ALT_MAILBOX);
+       alt_path = mailbox_get_path_to(ctx->box,
+                                      MAILBOX_LIST_PATH_TYPE_ALT_MAILBOX);
 
        sdbox_sync_set_uidvalidity(ctx);
        if (sdbox_sync_index_rebuild_dir(ctx, path, TRUE) < 0) {
index 7e0c4e65b0a31ac1da917ffca83d5a99523fb6aa..28e0cf0393a3aaadcef76e528545554c01909e36 100644 (file)
@@ -167,8 +167,7 @@ index_index_rebuild_init(struct mailbox *box, struct mail_index_view *view,
        mail_cache_reset(box->cache);
 
        /* if backup index file exists, try to use it */
-       index_dir = mailbox_list_get_path(box->list, box->name,
-                                         MAILBOX_LIST_PATH_TYPE_INDEX);
+       index_dir = mailbox_get_path_to(box, MAILBOX_LIST_PATH_TYPE_INDEX);
        backup_path = t_strconcat(box->index_prefix, "/.backup", NULL);
        ctx->backup_index = mail_index_alloc(index_dir, backup_path);
 
index c8dcf1a7f53213c4bfe7f8a4df9f98a4090e5ad3..d61599d8ce2d7efea891e2429965416d949c5de8 100644 (file)
@@ -139,11 +139,9 @@ index_mailbox_alloc_index(struct mailbox *box)
 {
        const char *index_dir, *mailbox_path;
 
-       mailbox_path = mailbox_list_get_path(box->list, box->name,
-                                            MAILBOX_LIST_PATH_TYPE_MAILBOX);
+       mailbox_path = mailbox_get_path(box);
        index_dir = (box->flags & MAILBOX_FLAG_NO_INDEX_FILES) != 0 ? "" :
-               mailbox_list_get_path(box->list, box->name,
-                                     MAILBOX_LIST_PATH_TYPE_INDEX);
+               mailbox_get_path_to(box, MAILBOX_LIST_PATH_TYPE_INDEX);
        if (*index_dir == '\0')
                index_dir = NULL;
 
@@ -165,8 +163,7 @@ int index_storage_mailbox_exists_full(struct mailbox *box, const char *subdir,
        const char *path, *path2;
 
        /* see if it's selectable */
-       path = mailbox_list_get_path(box->list, box->name,
-                                    MAILBOX_LIST_PATH_TYPE_MAILBOX);
+       path = mailbox_get_path(box);
        if (subdir != NULL)
                path = t_strconcat(path, "/", subdir, NULL);
        if (stat(path, &st) == 0) {
@@ -180,8 +177,7 @@ int index_storage_mailbox_exists_full(struct mailbox *box, const char *subdir,
        }
 
        /* see if it's non-selectable */
-       path2 = mailbox_list_get_path(box->list, box->name,
-                                     MAILBOX_LIST_PATH_TYPE_DIR);
+       path2 = mailbox_get_path_to(box, MAILBOX_LIST_PATH_TYPE_DIR);
        if (strcmp(path, path2) != 0 &&
            stat(path2, &st) == 0) {
                *existence_r = MAILBOX_EXISTENCE_NOSELECT;
index 9eecd610bcadd7759627d1373968785d369f8a56..6cec307f7dbd7736555e7152d3d7fa197462f393 100644 (file)
@@ -12,8 +12,7 @@ static int index_storage_mailbox_alloc_index_pvt(struct mailbox *box)
        if (box->index_pvt != NULL)
                return 1;
 
-       index_dir = mailbox_list_get_path(box->list, box->name,
-                                         MAILBOX_LIST_PATH_TYPE_INDEX_PRIVATE);
+       index_dir = mailbox_get_path_to(box, MAILBOX_LIST_PATH_TYPE_INDEX_PRIVATE);
        if (index_dir == NULL) {
                /* no private indexes */
                return 0;
index 7d467507e9f18fb3c3a04b97ffbd6bc3afcf96eb..f09183a7daf175ee6e8f910aadbeb611ae0788d0 100644 (file)
@@ -485,8 +485,7 @@ int index_storage_list_index_has_changed(struct mailbox *box,
                return 1;
        }
 
-       dir = mailbox_list_get_path(box->list, box->name,
-                                   MAILBOX_LIST_PATH_TYPE_INDEX);
+       dir = mailbox_get_path_to(box, MAILBOX_LIST_PATH_TYPE_INDEX);
        path = t_strconcat(dir, "/", box->index_prefix, ".log", NULL);
        if (stat(path, &st) < 0) {
                if (errno == ENOENT)
@@ -525,8 +524,7 @@ void index_storage_list_index_update_sync(struct mailbox *box,
                return;
        old_rec = data;
 
-       dir = mailbox_list_get_path(box->list, box->name,
-                                   MAILBOX_LIST_PATH_TYPE_INDEX);
+       dir = mailbox_get_path_to(box, MAILBOX_LIST_PATH_TYPE_INDEX);
        path = t_strconcat(dir, "/", box->index_prefix, ".log", NULL);
        if (stat(path, &st) < 0) {
                mail_storage_set_critical(box->storage,
index 23f58134ba32a3db8855fb52b8ed87caec11fc5d..36465099b3faa288b034cbf1d80ce78b02fad7b2 100644 (file)
@@ -66,8 +66,7 @@ maildir_keywords_init_readonly(struct mailbox *box)
        struct maildir_keywords *mk;
        const char *dir;
 
-       dir = mailbox_list_get_path(box->list, box->name,
-                                   MAILBOX_LIST_PATH_TYPE_CONTROL);
+       dir = mailbox_get_path_to(box, MAILBOX_LIST_PATH_TYPE_CONTROL);
 
        mk = i_new(struct maildir_keywords, 1);
        mk->storage = box->storage;
index e85f616813cd59c3797b428e13cc13f2afa68e59..ab3d439a5de4a32b386614b7cee6a69075fa8571 100644 (file)
@@ -728,8 +728,7 @@ int maildir_list_index_has_changed(struct mailbox *box,
                return 1;
        }
 
-       root_dir = mailbox_list_get_path(box->list, box->name,
-                                        MAILBOX_LIST_PATH_TYPE_MAILBOX);
+       root_dir = mailbox_get_path(box);
 
        /* check if new/ changed */
        new_dir = t_strconcat(root_dir, "/new", NULL);
index be36f014487308a6d5d213949d388c6f8695fa9e..5ffbc2362cff238336a2a5c4d106e9a1771cead6 100644 (file)
@@ -154,10 +154,9 @@ static int maildir_uidlist_lock_timeout(struct maildir_uidlist *uidlist,
                return 1;
        }
 
-        index_storage_lock_notify_reset(uidlist->box);
+        index_storage_lock_notify_reset(box);
 
-       control_dir = mailbox_list_get_path(box->list, box->name,
-                                           MAILBOX_LIST_PATH_TYPE_CONTROL);
+       control_dir = mailbox_get_path_to(box, MAILBOX_LIST_PATH_TYPE_CONTROL);
        path = t_strconcat(control_dir, "/" MAILDIR_UIDLIST_NAME, NULL);
 
        for (i = 0;; i++) {
@@ -265,8 +264,7 @@ struct maildir_uidlist *maildir_uidlist_init(struct maildir_mailbox *mbox)
        struct maildir_uidlist *uidlist;
        const char *control_dir;
 
-       control_dir = mailbox_list_get_path(box->list, box->name,
-                                           MAILBOX_LIST_PATH_TYPE_CONTROL);
+       control_dir = mailbox_get_path_to(box, MAILBOX_LIST_PATH_TYPE_CONTROL);
 
        uidlist = i_new(struct maildir_uidlist, 1);
        uidlist->box = box;
@@ -1396,8 +1394,7 @@ static int maildir_uidlist_recreate(struct maildir_uidlist *uidlist)
 
        maildir_uidlist_records_drop_expunges(uidlist);
 
-       control_dir = mailbox_list_get_path(box->list, box->name,
-                                           MAILBOX_LIST_PATH_TYPE_CONTROL);
+       control_dir = mailbox_get_path_to(box, MAILBOX_LIST_PATH_TYPE_CONTROL);
        temp_path = t_strconcat(control_dir,
                                "/" MAILDIR_UIDLIST_NAME ".tmp", NULL);
 
@@ -1760,7 +1757,7 @@ int maildir_uidlist_sync_next_uid(struct maildir_uidlist_sync_ctx *ctx,
 {
        struct maildir_uidlist *uidlist = ctx->uidlist;
        struct maildir_uidlist_rec *rec, *old_rec;
-       const char *p, *dir;
+       const char *p;
 
        *rec_r = NULL;
 
@@ -1768,12 +1765,8 @@ int maildir_uidlist_sync_next_uid(struct maildir_uidlist_sync_ctx *ctx,
                return -1;
        for (p = filename; *p != '\0'; p++) {
                if (*p == 13 || *p == 10) {
-                       struct mailbox *box = uidlist->box;
-
-                       dir = mailbox_list_get_path(box->list, box->name,
-                                               MAILBOX_LIST_PATH_TYPE_MAILBOX);
                        i_warning("Maildir %s: Ignoring a file with #0x%x: %s",
-                                 dir, *p, filename);
+                                 mailbox_get_path(uidlist->box), *p, filename);
                        return 1;
                }
        }
index 9c19f0a58f377ddacd375310c9d6020e4e662862..c93e6ea553ac8905f2dafc8f87c4c634bd6f45b8 100644 (file)
@@ -217,11 +217,9 @@ static int maildir_create_subdirs(struct mailbox *box)
                                      "/", subdirs[i], NULL);
        }
        types[i] = MAILBOX_LIST_PATH_TYPE_CONTROL;
-       dirs[i++] = mailbox_list_get_path(box->list, box->name,
-                                         MAILBOX_LIST_PATH_TYPE_CONTROL);
+       dirs[i++] = mailbox_get_path_to(box, MAILBOX_LIST_PATH_TYPE_CONTROL);
        types[i] = MAILBOX_LIST_PATH_TYPE_INDEX;
-       dirs[i++] = mailbox_list_get_path(box->list, box->name,
-                                         MAILBOX_LIST_PATH_TYPE_INDEX);
+       dirs[i++] = mailbox_get_path_to(box, MAILBOX_LIST_PATH_TYPE_INDEX);
        i_assert(i == N_ELEMENTS(dirs));
 
        for (i = 0; i < N_ELEMENTS(dirs); i++) {
index 79f4583367bf48b13a483b67c15d2f3ae07f7d97..9a6c86d0ec9146679b2b569ed343dcdbb38ea71e 100644 (file)
@@ -501,8 +501,7 @@ static int create_inbox(struct mailbox *box)
        const char *inbox_path;
        int fd;
 
-       inbox_path = mailbox_list_get_path(box->list, "INBOX",
-                                          MAILBOX_LIST_PATH_TYPE_MAILBOX);
+       inbox_path = mailbox_get_path(box);
 
        fd = open(inbox_path, O_RDWR | O_CREAT | O_EXCL, 0660);
        if (fd == -1 && errno == EACCES) {
index e2d80279edba6f0ac8cdc298d8e66022c00804d7..2891a8a97ca96cd60186dbf856a1d948e5058ecf 100644 (file)
@@ -558,6 +558,9 @@ void mailbox_set_deleted(struct mailbox *box);
 int mailbox_mark_index_deleted(struct mailbox *box, bool del);
 /* Easy wrapper for getting mailbox's MAILBOX_LIST_PATH_TYPE_MAILBOX */
 const char *mailbox_get_path(struct mailbox *box) ATTR_PURE;
+/* Returns path to specified type of files in mailbox. */
+const char *
+mailbox_get_path_to(struct mailbox *box, enum mailbox_list_path_type type);
 /* Get mailbox permissions. */
 const struct mailbox_permissions *mailbox_get_permissions(struct mailbox *box);
 /* Force permissions to be refreshed on next lookup */
index ebc761af68553180c828be9431ac74dc60f6b9fb..58c9d7174e1788fd098d3678b3167ddd52458d4a 100644 (file)
@@ -1797,13 +1797,18 @@ void mailbox_set_deleted(struct mailbox *box)
        box->mailbox_deleted = TRUE;
 }
 
+const char *
+mailbox_get_path_to(struct mailbox *box, enum mailbox_list_path_type type)
+{
+       return mailbox_list_get_path(box->list, box->name, type);
+}
+
 const char *mailbox_get_path(struct mailbox *box)
 {
        const char *path;
 
        if (box->_path == NULL) {
-               path = mailbox_list_get_path(box->list, box->name,
-                                            MAILBOX_LIST_PATH_TYPE_MAILBOX);
+               path = mailbox_get_path_to(box, MAILBOX_LIST_PATH_TYPE_MAILBOX);
                box->_path = p_strdup(box->pool, path);
        }
        return box->_path;
index 722f980ce566ff735459ce9c6a58b60b9f241a49..8c2817ac1b42846d44db9c41e9f2fa000593b27e 100644 (file)
@@ -418,8 +418,7 @@ cmd_acl_debug_mailbox_open(struct doveadm_mail_cmd_context *ctx,
        box = mailbox_alloc(ns->list, mailbox,
                            MAILBOX_FLAG_READONLY | MAILBOX_FLAG_IGNORE_ACLS);
        if (mailbox_open(box) < 0) {
-               path = mailbox_list_get_path(ns->list, box->name,
-                                            MAILBOX_LIST_PATH_TYPE_MAILBOX);
+               path = mailbox_get_path(box);
                errstr = mail_storage_get_last_error(box->storage, &error);
                doveadm_mail_failed_error(ctx, error);
                if (error != MAIL_ERROR_NOTFOUND ||
index 8e9af008368ecbab68a460b9fc7e46b2b7827863..3e7f0b4d4a78cb5b9527743dfe1b20aab01503cb 100644 (file)
@@ -115,8 +115,7 @@ fts_backend_squat_set_box(struct squat_fts_backend *backend,
 
        perm = mailbox_get_permissions(box);
        storage = mailbox_get_storage(box);
-       path = mailbox_list_get_path(box->list, box->name,
-                                    MAILBOX_LIST_PATH_TYPE_INDEX);
+       path = mailbox_get_path_to(box, MAILBOX_LIST_PATH_TYPE_INDEX);
        i_assert(*path != '\0'); /* fts already checked this */
 
        mailbox_get_open_status(box, STATUS_UIDVALIDITY, &status);
index 4da0e52fe94fef444364096064f320384f4943bd..010d937103d928a5d2a84b91e08622c013415375 100644 (file)
@@ -770,8 +770,7 @@ static bool fs_quota_match_box(struct quota_root *_root, struct mailbox *box)
        if (root->storage_mount_path == NULL)
                return TRUE;
 
-       mailbox_path = mailbox_list_get_path(box->list, box->name,
-                                            MAILBOX_LIST_PATH_TYPE_MAILBOX);
+       mailbox_path = mailbox_get_path(box);
        if (stat(mailbox_path, &mst) < 0) {
                if (errno != ENOENT)
                        i_error("stat(%s) failed: %m", mailbox_path);