changeset 4709:d2693511dd33 HEAD

Let FTS backend init function take a struct mailbox instead of path.
author Timo Sirainen <tss@iki.fi>
date Wed, 25 Oct 2006 02:46:14 +0300
parents e3534695b58a
children d0e37ed08bdb
files src/plugins/fts/fts-api-private.h src/plugins/fts/fts-api.c src/plugins/fts/fts-api.h src/plugins/fts/fts-storage.c
diffstat 4 files changed, 15 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/fts/fts-api-private.h	Wed Oct 25 02:45:14 2006 +0300
+++ b/src/plugins/fts/fts-api-private.h	Wed Oct 25 02:46:14 2006 +0300
@@ -4,7 +4,7 @@
 #include "fts-api.h"
 
 struct fts_backend_vfuncs {
-	struct fts_backend *(*init)(const char *path);
+	struct fts_backend *(*init)(struct mailbox *box);
 	void (*deinit)(struct fts_backend *backend);
 
 	struct fts_backend_build_context *
--- a/src/plugins/fts/fts-api.c	Wed Oct 25 02:45:14 2006 +0300
+++ b/src/plugins/fts/fts-api.c	Wed Oct 25 02:46:14 2006 +0300
@@ -33,16 +33,19 @@
 }
 
 struct fts_backend *
-fts_backend_init(const char *backend_name, const char *path)
+fts_backend_init(const char *backend_name, struct mailbox *box)
 {
 	const struct fts_backend *const *be;
 	unsigned int i, count;
 
-	be = array_get(&backends, &count);
-	for (i = 0; i < count; i++) {
-		if (strcmp(be[i]->name, backend_name) == 0)
-			return be[i]->v.init(path);
+	if (array_is_created(&backends)) {
+		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 NULL;
 }
--- a/src/plugins/fts/fts-api.h	Wed Oct 25 02:45:14 2006 +0300
+++ b/src/plugins/fts/fts-api.h	Wed Oct 25 02:46:14 2006 +0300
@@ -1,10 +1,12 @@
 #ifndef __FTS_API_H
 #define __FTS_API_H
 
+struct mailbox;
+
 #include "seq-range-array.h"
 
 struct fts_backend *
-fts_backend_init(const char *backend_name, const char *path);
+fts_backend_init(const char *backend_name, struct mailbox *box);
 void fts_backend_deinit(struct fts_backend *backend);
 
 /* Initialize adding new data to the index. last_uid_r is set to the last UID
--- a/src/plugins/fts/fts-storage.c	Wed Oct 25 02:45:14 2006 +0300
+++ b/src/plugins/fts/fts-storage.c	Wed Oct 25 02:46:14 2006 +0300
@@ -13,8 +13,6 @@
 
 #include <stdlib.h>
 
-#define FTS_INDEX_NAME "dovecot.index.fts"
-
 #define FTS_CONTEXT(obj) \
 	*((void **)array_idx_modifiable(&(obj)->module_contexts, \
 					fts_storage_module_id))
@@ -162,6 +160,7 @@
 		    (block.hdr != NULL || block.size != 0)) {
 			str_truncate(ctx->headers, 0);
 			ctx->save_part = FALSE;
+			prev_part = block.part;
 			skip_part = NULL;
 		}
 
@@ -360,7 +359,7 @@
 {
 	struct fts_mailbox *fbox;
 	struct fts_backend *backend;
-	const char *env, *path;
+	const char *env;
 
 	if (fts_next_hook_mailbox_opened != NULL)
 		fts_next_hook_mailbox_opened(box);
@@ -369,12 +368,7 @@
 	if (env == NULL)
 		return;
 
-	path = mail_storage_get_mailbox_index_dir(box->storage, box->name);
-	if (path == NULL)
-		return;
-
-	path = t_strconcat(path, "/" FTS_INDEX_NAME, NULL);
-	backend = fts_backend_init(env, path);
+	backend = fts_backend_init(env, box);
 	if (backend == NULL)
 		return;