dovecot-2.2: lib-storage: Added mailbox_list_init_fs() to easily...
dovecot at dovecot.org
dovecot at dovecot.org
Wed Nov 6 23:01:14 EET 2013
details: http://hg.dovecot.org/dovecot-2.2/rev/9d5bfd8e50c9
changeset: 16944:9d5bfd8e50c9
user: Timo Sirainen <tss at iki.fi>
date: Wed Nov 06 21:08:42 2013 +0200
description:
lib-storage: Added mailbox_list_init_fs() to easily initialize fs.
Use it for dbox's attachment_fs.
diffstat:
src/lib-storage/Makefile.am | 2 ++
src/lib-storage/index/dbox-common/dbox-storage.c | 11 ++++-------
src/lib-storage/mailbox-list-private.h | 5 +++++
src/lib-storage/mailbox-list.c | 24 ++++++++++++++++++++++++
4 files changed, 35 insertions(+), 7 deletions(-)
diffs (100 lines):
diff -r 5c72e7d65e6f -r 9d5bfd8e50c9 src/lib-storage/Makefile.am
--- a/src/lib-storage/Makefile.am Wed Nov 06 21:06:15 2013 +0200
+++ b/src/lib-storage/Makefile.am Wed Nov 06 21:08:42 2013 +0200
@@ -7,6 +7,8 @@
-I$(top_srcdir)/src/lib-test \
-I$(top_srcdir)/src/lib-auth \
-I$(top_srcdir)/src/lib-dict \
+ -I$(top_srcdir)/src/lib-ssl-iostream \
+ -I$(top_srcdir)/src/lib-fs \
-I$(top_srcdir)/src/lib-master \
-I$(top_srcdir)/src/lib-settings \
-I$(top_srcdir)/src/lib-charset \
diff -r 5c72e7d65e6f -r 9d5bfd8e50c9 src/lib-storage/index/dbox-common/dbox-storage.c
--- a/src/lib-storage/index/dbox-common/dbox-storage.c Wed Nov 06 21:06:15 2013 +0200
+++ b/src/lib-storage/index/dbox-common/dbox-storage.c Wed Nov 06 21:08:42 2013 +0200
@@ -94,12 +94,8 @@
{
struct dbox_storage *storage = (struct dbox_storage *)_storage;
const struct mail_storage_settings *set = _storage->set;
- struct fs_settings fs_set;
const char *error;
- memset(&fs_set, 0, sizeof(fs_set));
- fs_set.temp_file_prefix = mailbox_list_get_global_temp_prefix(ns->list);
-
if (*set->mail_attachment_fs != '\0') {
const char *name, *args, *dir;
@@ -121,9 +117,10 @@
dir = mail_user_home_expand(_storage->user,
set->mail_attachment_dir);
storage->attachment_dir = p_strdup(_storage->pool, dir);
- fs_set.root_path = storage->attachment_dir;
- if (fs_init(name, args, &fs_set, &storage->attachment_fs,
- &error) < 0) {
+
+ if (mailbox_list_init_fs(ns->list, name, args,
+ storage->attachment_dir,
+ &storage->attachment_fs, &error) < 0) {
*error_r = t_strdup_printf("mail_attachment_fs: %s",
error);
return -1;
diff -r 5c72e7d65e6f -r 9d5bfd8e50c9 src/lib-storage/mailbox-list-private.h
--- a/src/lib-storage/mailbox-list-private.h Wed Nov 06 21:06:15 2013 +0200
+++ b/src/lib-storage/mailbox-list-private.h Wed Nov 06 21:08:42 2013 +0200
@@ -22,6 +22,7 @@
struct stat;
struct dirent;
+struct fs;
struct imap_match_glob;
struct mailbox_tree_context;
struct mailbox_list_notify;
@@ -210,4 +211,8 @@
void mailbox_list_set_internal_error(struct mailbox_list *list);
bool mailbox_list_set_error_from_errno(struct mailbox_list *list);
+int mailbox_list_init_fs(struct mailbox_list *list, const char *driver,
+ const char *args, const char *root_dir,
+ struct fs **fs_r, const char **error_r);
+
#endif
diff -r 5c72e7d65e6f -r 9d5bfd8e50c9 src/lib-storage/mailbox-list.c
--- a/src/lib-storage/mailbox-list.c Wed Nov 06 21:06:15 2013 +0200
+++ b/src/lib-storage/mailbox-list.c Wed Nov 06 21:08:42 2013 +0200
@@ -12,6 +12,8 @@
#include "time-util.h"
#include "unichar.h"
#include "settings-parser.h"
+#include "iostream-ssl.h"
+#include "fs-api.h"
#include "imap-utf7.h"
#include "mailbox-log.h"
#include "mailbox-tree.h"
@@ -1803,3 +1805,25 @@
mailbox_list_set_error(list, error, error_string);
return TRUE;
}
+
+int mailbox_list_init_fs(struct mailbox_list *list, const char *driver,
+ const char *args, const char *root_dir,
+ struct fs **fs_r, const char **error_r)
+{
+ struct fs_settings fs_set;
+ struct ssl_iostream_settings ssl_set;
+
+ memset(&ssl_set, 0, sizeof(ssl_set));
+ ssl_set.ca_dir = list->mail_set->ssl_client_ca_dir;
+ ssl_set.ca_file = list->mail_set->ssl_client_ca_file;
+
+ memset(&fs_set, 0, sizeof(fs_set));
+ fs_set.temp_file_prefix = mailbox_list_get_global_temp_prefix(list);
+ fs_set.base_dir = list->ns->user->set->base_dir;
+ fs_set.temp_dir = list->ns->user->set->mail_temp_dir;
+ fs_set.ssl_client_set = &ssl_set;
+ fs_set.root_path = root_dir;
+ fs_set.debug = list->ns->user->mail_debug;
+
+ return fs_init(driver, args, &fs_set, fs_r, error_r);
+}
More information about the dovecot-cvs
mailing list