dovecot-2.2: dict_init() API changed to return int.

dovecot at dovecot.org dovecot at dovecot.org
Sun Sep 16 00:52:52 EEST 2012


details:   http://hg.dovecot.org/dovecot-2.2/rev/9bff478f81fd
changeset: 15067:9bff478f81fd
user:      Timo Sirainen <tss at iki.fi>
date:      Sun Sep 16 00:52:39 2012 +0300
description:
dict_init() API changed to return int.

diffstat:

 src/auth/db-dict.c                          |   5 +++--
 src/dict/dict-connection.c                  |   5 ++---
 src/lib-dict/dict-client.c                  |   9 +++++----
 src/lib-dict/dict-db.c                      |  14 ++++++++------
 src/lib-dict/dict-file.c                    |  12 +++++++-----
 src/lib-dict/dict-memcached-ascii.c         |   8 +++++---
 src/lib-dict/dict-memcached.c               |   7 ++++---
 src/lib-dict/dict-private.h                 |   7 ++++---
 src/lib-dict/dict-redis.c                   |   7 ++++---
 src/lib-dict/dict-sql.c                     |  10 ++++++----
 src/lib-dict/dict.c                         |  11 ++++++-----
 src/lib-dict/dict.h                         |   6 +++---
 src/lib-imap-urlauth/imap-urlauth-backend.c |   5 ++---
 src/plugins/acl/acl-lookup-dict.c           |   5 ++---
 src/plugins/expire/doveadm-expire.c         |   5 ++---
 src/plugins/expire/expire-plugin.c          |   5 ++---
 src/plugins/quota/quota-dict.c              |   7 ++++---
 17 files changed, 69 insertions(+), 59 deletions(-)

diffs (truncated from 403 to 300 lines):

diff -r d419aac7ab31 -r 9bff478f81fd src/auth/db-dict.c
--- a/src/auth/db-dict.c	Sat Sep 15 23:57:08 2012 +0300
+++ b/src/auth/db-dict.c	Sun Sep 16 00:52:39 2012 +0300
@@ -90,8 +90,9 @@
 		i_fatal("dict %s: Unsupported value_format %s in ",
 			config_path, conn->set.value_format);
 	}
-	conn->dict = dict_init(conn->set.uri, DICT_DATA_TYPE_STRING, "",
-			       global_auth_settings->base_dir);
+	if (dict_init(conn->set.uri, DICT_DATA_TYPE_STRING, "",
+		      global_auth_settings->base_dir, &conn->dict) < 0)
+		i_fatal("dict %s: Failed to init dict", config_path);
 
 	conn->next = connections;
 	connections = conn;
diff -r d419aac7ab31 -r 9bff478f81fd src/dict/dict-connection.c
--- a/src/dict/dict-connection.c	Sat Sep 15 23:57:08 2012 +0300
+++ b/src/dict/dict-connection.c	Sun Sep 16 00:52:39 2012 +0300
@@ -83,9 +83,8 @@
 	}
 	uri = strlist[i+1];
 
-	conn->dict = dict_init(uri, conn->value_type, conn->username,
-			       dict_settings->base_dir);
-	if (conn->dict == NULL) {
+	if (dict_init(uri, conn->value_type, conn->username,
+		      dict_settings->base_dir, &conn->dict) < 0) {
 		/* dictionary initialization failed */
 		i_error("Failed to initialize dictionary '%s'", conn->name);
 		return -1;
diff -r d419aac7ab31 -r 9bff478f81fd src/lib-dict/dict-client.c
--- a/src/lib-dict/dict-client.c	Sat Sep 15 23:57:08 2012 +0300
+++ b/src/lib-dict/dict-client.c	Sun Sep 16 00:52:39 2012 +0300
@@ -463,10 +463,10 @@
 	}
 }
 
-static struct dict *
+static int
 client_dict_init(struct dict *driver, const char *uri,
 		 enum dict_data_type value_type, const char *username,
-		 const char *base_dir)
+		 const char *base_dir, struct dict **dict_r)
 {
 	struct client_dict *dict;
 	const char *dest_uri;
@@ -476,7 +476,7 @@
 	dest_uri = strchr(uri, ':');
 	if (dest_uri == NULL) {
 		i_error("dict-client: Invalid URI: %s", uri);
-		return NULL;
+		return -1;
 	}
 
 	pool = pool_alloconly_create("client dict", 1024);
@@ -496,7 +496,8 @@
 				"/"DEFAULT_DICT_SERVER_SOCKET_FNAME, NULL);
 	}
 	dict->uri = p_strdup(pool, dest_uri + 1);
-	return &dict->dict;
+	*dict_r = &dict->dict;
+	return -1;
 }
 
 static void client_dict_deinit(struct dict *_dict)
diff -r d419aac7ab31 -r 9bff478f81fd src/lib-dict/dict-db.c
--- a/src/lib-dict/dict-db.c	Sat Sep 15 23:57:08 2012 +0300
+++ b/src/lib-dict/dict-db.c	Sun Sep 16 00:52:39 2012 +0300
@@ -140,10 +140,11 @@
 	return 0;
 }
 
-static struct dict *
+static int
 db_dict_init(struct dict *driver, const char *uri,
 	     enum dict_data_type value_type,
-	     const char *username, const char *base_dir ATTR_UNUSED)
+	     const char *username, const char *base_dir ATTR_UNUSED,
+	     struct dict **dict_r)
 {
 	struct db_dict *dict;
 	pool_t pool;
@@ -156,7 +157,7 @@
 			"run-time linked against %d.%d.%d library",
 			DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
 			major, minor, patch);
-		return NULL;
+		return -1;
 	}
 
 	pool = pool_alloconly_create("db dict", 1024);
@@ -170,15 +171,16 @@
 	if (ret != 0) {
 		i_error("db_env_create() failed: %s\n", db_strerror(ret));
 		pool_unref(&pool);
-		return NULL;
+		return -1;
 	}
 
 	if (db_dict_open(dict, uri, username) < 0) {
 		i_error("db(%s) open failed", uri);
 		db_dict_deinit(&dict->dict);
-		return NULL;
+		return -1;
 	}
-	return &dict->dict;
+	*dict_r = &dict->dict;
+	return 0;
 }
 
 static void db_dict_deinit(struct dict *_dict)
diff -r d419aac7ab31 -r 9bff478f81fd src/lib-dict/dict-file.c
--- a/src/lib-dict/dict-file.c	Sat Sep 15 23:57:08 2012 +0300
+++ b/src/lib-dict/dict-file.c	Sun Sep 16 00:52:39 2012 +0300
@@ -51,10 +51,11 @@
 	.use_io_notify = TRUE
 };
 
-static struct dict *file_dict_init(struct dict *driver, const char *uri,
-				   enum dict_data_type value_type ATTR_UNUSED,
-				   const char *username ATTR_UNUSED,
-				   const char *base_dir ATTR_UNUSED)
+static int
+file_dict_init(struct dict *driver, const char *uri,
+	       enum dict_data_type value_type ATTR_UNUSED,
+	       const char *username ATTR_UNUSED,
+	       const char *base_dir ATTR_UNUSED, struct dict **dict_r)
 {
 	struct file_dict *dict;
 	const char *p;
@@ -79,7 +80,8 @@
 	dict->hash_pool = pool_alloconly_create("file dict", 1024);
 	hash_table_create(&dict->hash, dict->hash_pool, 0, str_hash, strcmp);
 	dict->fd = -1;
-	return &dict->dict;
+	*dict_r = &dict->dict;
+	return -1;
 }
 
 static void file_dict_deinit(struct dict *_dict)
diff -r d419aac7ab31 -r 9bff478f81fd src/lib-dict/dict-memcached-ascii.c
--- a/src/lib-dict/dict-memcached-ascii.c	Sat Sep 15 23:57:08 2012 +0300
+++ b/src/lib-dict/dict-memcached-ascii.c	Sun Sep 16 00:52:39 2012 +0300
@@ -330,11 +330,12 @@
 	return str_c(str);
 }
 
-static struct dict *
+static int
 memcached_ascii_dict_init(struct dict *driver, const char *uri,
 			  enum dict_data_type value_type ATTR_UNUSED,
 			  const char *username,
-			  const char *base_dir ATTR_UNUSED)
+			  const char *base_dir ATTR_UNUSED,
+			  struct dict **dict_r)
 {
 	struct memcached_ascii_dict *dict;
 	const char *const *args;
@@ -388,7 +389,8 @@
 
 	dict->ioloop = io_loop_create();
 	current_ioloop = old_ioloop;
-	return &dict->dict;
+	*dict_r = &dict->dict;
+	return 0;
 }
 
 static void memcached_ascii_dict_deinit(struct dict *_dict)
diff -r d419aac7ab31 -r 9bff478f81fd src/lib-dict/dict-memcached.c
--- a/src/lib-dict/dict-memcached.c	Sat Sep 15 23:57:08 2012 +0300
+++ b/src/lib-dict/dict-memcached.c	Sun Sep 16 00:52:39 2012 +0300
@@ -167,11 +167,11 @@
 	.client_connected = memcached_conn_connected
 };
 
-static struct dict *
+static int
 memcached_dict_init(struct dict *driver, const char *uri,
 		    enum dict_data_type value_type ATTR_UNUSED,
 		    const char *username ATTR_UNUSED,
-		    const char *base_dir ATTR_UNUSED)
+		    const char *base_dir ATTR_UNUSED, struct dict **dict_r)
 {
 	struct memcached_dict *dict;
 	const char *const *args;
@@ -213,7 +213,8 @@
 	dict->dict = *driver;
 	dict->conn.cmd = buffer_create_dynamic(default_pool, 256);
 	dict->conn.dict = dict;
-	return &dict->dict;
+	*dict_r = &dict->dict;
+	return 0;
 }
 
 static void memcached_dict_deinit(struct dict *_dict)
diff -r d419aac7ab31 -r 9bff478f81fd src/lib-dict/dict-private.h
--- a/src/lib-dict/dict-private.h	Sat Sep 15 23:57:08 2012 +0300
+++ b/src/lib-dict/dict-private.h	Sun Sep 16 00:52:39 2012 +0300
@@ -4,9 +4,10 @@
 #include "dict.h"
 
 struct dict_vfuncs {
-	struct dict *(*init)(struct dict *dict_driver, const char *uri,
-			     enum dict_data_type value_type,
-			     const char *username, const char *base_dir);
+	int (*init)(struct dict *dict_driver, const char *uri,
+		    enum dict_data_type value_type,
+		    const char *username, const char *base_dir,
+		    struct dict **dict_r);
 	void (*deinit)(struct dict *dict);
 	int (*wait)(struct dict *dict);
 
diff -r d419aac7ab31 -r 9bff478f81fd src/lib-dict/dict-redis.c
--- a/src/lib-dict/dict-redis.c	Sat Sep 15 23:57:08 2012 +0300
+++ b/src/lib-dict/dict-redis.c	Sun Sep 16 00:52:39 2012 +0300
@@ -298,11 +298,11 @@
 	return str_c(str);
 }
 
-static struct dict *
+static int
 redis_dict_init(struct dict *driver, const char *uri,
 		enum dict_data_type value_type ATTR_UNUSED,
 		const char *username,
-		const char *base_dir ATTR_UNUSED)
+		const char *base_dir ATTR_UNUSED, struct dict **dict_r)
 {
 	struct redis_dict *dict;
 	const char *const *args;
@@ -352,7 +352,8 @@
 	dict->dict = *driver;
 	dict->conn.last_reply = str_new(default_pool, 256);
 	dict->conn.dict = dict;
-	return &dict->dict;
+	*dict_r = &dict->dict;
+	return -1;
 }
 
 static void redis_dict_deinit(struct dict *_dict)
diff -r d419aac7ab31 -r 9bff478f81fd src/lib-dict/dict-sql.c
--- a/src/lib-dict/dict-sql.c	Sat Sep 15 23:57:08 2012 +0300
+++ b/src/lib-dict/dict-sql.c	Sun Sep 16 00:52:39 2012 +0300
@@ -71,10 +71,11 @@
 
 static void sql_dict_prev_inc_flush(struct sql_dict_transaction_context *ctx);
 
-static struct dict *
+static int
 sql_dict_init(struct dict *driver, const char *uri,
 	      enum dict_data_type value_type ATTR_UNUSED,
-	      const char *username, const char *base_dir ATTR_UNUSED)
+	      const char *username, const char *base_dir ATTR_UNUSED,
+	      struct dict **dict_r)
 {
 	struct sql_dict *dict;
 	pool_t pool;
@@ -87,7 +88,7 @@
 	dict->set = dict_sql_settings_read(pool, uri);
 	if (dict->set == NULL) {
 		pool_unref(&pool);
-		return NULL;
+		return -1;
 	}
 
 	/* currently pgsql and sqlite don't support "ON DUPLICATE KEY" */
@@ -95,7 +96,8 @@
 
 	dict->db = sql_db_cache_new(dict_sql_db_cache, driver->name,
 				    dict->set->connect);
-	return &dict->dict;
+	*dict_r = &dict->dict;
+	return 0;
 }
 
 static void sql_dict_deinit(struct dict *_dict)
diff -r d419aac7ab31 -r 9bff478f81fd src/lib-dict/dict.c
--- a/src/lib-dict/dict.c	Sat Sep 15 23:57:08 2012 +0300
+++ b/src/lib-dict/dict.c	Sun Sep 16 00:52:39 2012 +0300
@@ -70,8 +70,8 @@
 	dict_driver_unregister(&dict_driver_redis);
 }
 
-struct dict *dict_init(const char *uri, enum dict_data_type value_type,
-		       const char *username, const char *base_dir)
+int dict_init(const char *uri, enum dict_data_type value_type,
+	      const char *username, const char *base_dir, struct dict **dict_r)
 {
 	struct dict *dict;
 	const char *p, *name;
@@ -81,7 +81,7 @@
 	p = strchr(uri, ':');
 	if (p == NULL) {
 		i_error("Dictionary URI is missing ':': %s", uri);
-		return NULL;
+		return -1;
 	}
 
 	T_BEGIN {
@@ -91,8 +91,9 @@
 			i_error("Unknown dict module: %s", name);


More information about the dovecot-cvs mailing list