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