dovecot: Keep struct mailbox pointer in struct fts_backend.

dovecot at dovecot.org dovecot at dovecot.org
Sun Feb 3 22:44:13 EET 2008


details:   http://hg.dovecot.org/dovecot/rev/2dffefc14e25
changeset: 7207:2dffefc14e25
user:      Timo Sirainen <tss at iki.fi>
date:      Sun Feb 03 22:41:29 2008 +0200
description:
Keep struct mailbox pointer in struct fts_backend.

diffstat:

2 files changed, 23 insertions(+), 7 deletions(-)
src/plugins/fts/fts-api-private.h |    1 +
src/plugins/fts/fts-api.c         |   29 ++++++++++++++++++++++-------

diffs (58 lines):

diff -r 83a3239808d3 -r 2dffefc14e25 src/plugins/fts/fts-api-private.h
--- a/src/plugins/fts/fts-api-private.h	Sat Feb 02 12:12:37 2008 +0200
+++ b/src/plugins/fts/fts-api-private.h	Sun Feb 03 22:41:29 2008 +0200
@@ -41,6 +41,7 @@ enum fts_backend_flags {
 
 struct fts_backend {
 	const char *name;
+	struct mailbox *box;
 	enum fts_backend_flags flags;
 
 	struct fts_backend_vfuncs v;
diff -r 83a3239808d3 -r 2dffefc14e25 src/plugins/fts/fts-api.c
--- a/src/plugins/fts/fts-api.c	Sat Feb 02 12:12:37 2008 +0200
+++ b/src/plugins/fts/fts-api.c	Sun Feb 03 22:41:29 2008 +0200
@@ -32,8 +32,8 @@ void fts_backend_unregister(const char *
 		array_free(&backends);
 }
 
-struct fts_backend *
-fts_backend_init(const char *backend_name, struct mailbox *box)
+static const struct fts_backend *
+fts_backend_class_lookup(const char *backend_name)
 {
 	const struct fts_backend *const *be;
 	unsigned int i, count;
@@ -42,12 +42,27 @@ fts_backend_init(const char *backend_nam
 		be = array_get(&backends, &count);
 		for (i = 0; i < count; i++) {
 			if (strcmp(be[i]->name, backend_name) == 0)
-				return be[i]->v.init(box);
-		}
-	}
-
-	i_error("Unknown FTS backend: %s", backend_name);
+				return be[i];
+		}
+	}
 	return NULL;
+}
+
+struct fts_backend *
+fts_backend_init(const char *backend_name, struct mailbox *box)
+{
+	const struct fts_backend *be;
+	struct fts_backend *backend;
+
+	be = fts_backend_class_lookup(backend_name);
+	if (be == NULL) {
+		i_error("Unknown FTS backend: %s", backend_name);
+		return NULL;
+	}
+
+	backend = be->v.init(box);
+	backend->box = box;
+	return backend;
 }
 
 void fts_backend_deinit(struct fts_backend **_backend)


More information about the dovecot-cvs mailing list