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