changeset 17753:866bb1354e85

Replaced dict_init() with dict_init_full() in various places.
author Timo Sirainen <tss@iki.fi>
date Thu, 28 Aug 2014 22:10:25 +0900
parents 58c3676c116c
children 48aa40ae3039
files src/lib-storage/index/index-attribute.c src/plugins/last-login/last-login-plugin.c src/plugins/quota/quota-dict.c src/plugins/quota/quota.c
diffstat 4 files changed, 31 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/index-attribute.c	Thu Aug 28 21:57:34 2014 +0900
+++ b/src/lib-storage/index/index-attribute.c	Thu Aug 28 22:10:25 2014 +0900
@@ -82,6 +82,7 @@
 	struct mail_storage *storage = box->storage;
 	struct mail_namespace *ns;
 	struct mailbox_metadata metadata;
+	struct dict_settings set;
 	const char *error;
 
 	if (mailbox_get_metadata(box, MAILBOX_METADATA_GUID, &metadata) < 0)
@@ -118,11 +119,13 @@
 		return -1;
 	}
 
-	if (dict_init(storage->set->mail_attribute_dict,
-		      DICT_DATA_TYPE_STRING,
-		      storage->user->username,
-		      storage->user->set->base_dir,
-		      &storage->_shared_attr_dict, &error) < 0) {
+	memset(&set, 0, sizeof(set));
+	set.username = storage->user->username;
+	set.base_dir = storage->user->set->base_dir;
+	if (mail_user_get_home(storage->user, &set.home_dir) <= 0)
+		set.home_dir = NULL;
+	if (dict_init_full(storage->set->mail_attribute_dict, &set,
+			   &storage->_shared_attr_dict, &error) < 0) {
 		mail_storage_set_critical(storage,
 			"mail_attribute_dict: dict_init(%s) failed: %s",
 			storage->set->mail_attribute_dict, error);
--- a/src/plugins/last-login/last-login-plugin.c	Thu Aug 28 21:57:34 2014 +0900
+++ b/src/plugins/last-login/last-login-plugin.c	Thu Aug 28 22:10:25 2014 +0900
@@ -61,6 +61,7 @@
 	struct mail_user_vfuncs *v = user->vlast;
 	struct last_login_user *luser;
 	struct dict *dict;
+	struct dict_settings set;
 	struct dict_transaction_context *trans;
 	const char *dict_value, *key_name, *error;
 
@@ -74,8 +75,12 @@
 	if (dict_value == NULL)
 		return;
 
-	if (dict_init(dict_value, DICT_DATA_TYPE_STRING, user->username,
-		      user->set->base_dir, &dict, &error) < 0) {
+	memset(&set, 0, sizeof(set));
+	set.username = user->username;
+	set.base_dir = user->set->base_dir;
+	if (mail_user_get_home(user, &set.home_dir) <= 0)
+		set.home_dir = NULL;
+	if (dict_init_full(dict_value, &set, &dict, &error) < 0) {
 		i_error("last_login_dict: dict_init(%s) failed: %s",
 			dict_value, error);
 		return;
--- a/src/plugins/quota/quota-dict.c	Thu Aug 28 21:57:34 2014 +0900
+++ b/src/plugins/quota/quota-dict.c	Thu Aug 28 22:10:25 2014 +0900
@@ -32,6 +32,7 @@
 			   const char **error_r)
 {
 	struct dict_quota_root *root = (struct dict_quota_root *)_root;
+	struct dict_settings set;
 	const char *username, *p, *error;
 
 	p = args == NULL ? NULL : strchr(args, ':');
@@ -78,9 +79,12 @@
 
 	/* FIXME: we should use 64bit integer as datatype instead but before
 	   it can actually be used don't bother */
-	if (dict_init(args, DICT_DATA_TYPE_STRING, username,
-		      _root->quota->user->set->base_dir, &root->dict,
-		      &error) < 0) {
+	memset(&set, 0, sizeof(set));
+	set.username = username;
+	set.base_dir = _root->quota->user->set->base_dir;
+	if (mail_user_get_home(_root->quota->user, &set.home_dir) <= 0)
+		set.home_dir = NULL;
+	if (dict_init_full(args, &set, &root->dict, &error) < 0) {
 		*error_r = t_strdup_printf("dict_init(%s) failed: %s", args, error);
 		return -1;
 	}
--- a/src/plugins/quota/quota.c	Thu Aug 28 21:57:34 2014 +0900
+++ b/src/plugins/quota/quota.c	Thu Aug 28 22:10:25 2014 +0900
@@ -664,10 +664,15 @@
 	}
 
 	if (root->limit_set_dict == NULL) {
-		if (dict_init(root->set->limit_set, DICT_DATA_TYPE_STRING,
-			      root->quota->user->username,
-			      root->quota->user->set->base_dir,
-			      &root->limit_set_dict, error_r) < 0)
+		struct dict_settings set;
+
+		memset(&set, 0, sizeof(set));
+		set.username = root->quota->user->username;
+		set.base_dir = root->quota->user->set->base_dir;
+		if (mail_user_get_home(root->quota->user, &set.home_dir) <= 0)
+			set.home_dir = NULL;
+		if (dict_init_full(root->set->limit_set, &set,
+				   &root->limit_set_dict, error_r) < 0)
 			return -1;
 	}