changeset 7207:2dffefc14e25 HEAD

Keep struct mailbox pointer in struct fts_backend.
author Timo Sirainen <tss@iki.fi>
date Sun, 03 Feb 2008 22:41:29 +0200
parents 83a3239808d3
children eec99cefd3bd
files src/plugins/fts/fts-api-private.h src/plugins/fts/fts-api.c
diffstat 2 files changed, 21 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- 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 @@
 
 struct fts_backend {
 	const char *name;
+	struct mailbox *box;
 	enum fts_backend_flags flags;
 
 	struct fts_backend_vfuncs v;
--- 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 @@
 		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 @@
 		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);
+				return be[i];
 		}
 	}
+	return NULL;
+}
 
-	i_error("Unknown FTS backend: %s", backend_name);
-	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)