changeset 13227:f4b565b76827

fts: Added "doveadm fts rescan" command.
author Timo Sirainen <tss@iki.fi>
date Fri, 12 Aug 2011 17:37:23 +0300
parents fd2e6a08052a
children bed970b4ca5e
files src/plugins/fts/doveadm-fts.c
diffstat 1 files changed, 35 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/fts/doveadm-fts.c	Fri Aug 12 17:33:29 2011 +0300
+++ b/src/plugins/fts/doveadm-fts.c	Fri Aug 12 17:37:23 2011 +0300
@@ -66,8 +66,42 @@
 	return ctx;
 }
 
+static void
+cmd_fts_rescan_run(struct doveadm_mail_cmd_context *ctx, struct mail_user *user)
+{
+	const char *ns_prefix = ctx->args[0];
+	struct mail_namespace *ns;
+	struct fts_backend *backend;
+
+	if (fts_namespace_find(user, ns_prefix, &ns) < 0)
+		return;
+	backend = fts_list_backend(ns->list);
+	if (fts_backend_rescan(backend) < 0)
+		i_error("fts rescan failed");
+}
+
+static void
+cmd_fts_rescan_init(struct doveadm_mail_cmd_context *ctx ATTR_UNUSED,
+		    const char *const args[])
+{
+	if (str_array_length(args) > 1)
+		doveadm_mail_help_name("fts rescan");
+}
+
+static struct doveadm_mail_cmd_context *
+cmd_fts_rescan_alloc(void)
+{
+	struct doveadm_mail_cmd_context *ctx;
+
+	ctx = doveadm_mail_cmd_alloc(struct doveadm_mail_cmd_context);
+	ctx->v.run = cmd_fts_rescan_run;
+	ctx->v.init = cmd_fts_rescan_init;
+	return ctx;
+}
+
 static struct doveadm_mail_cmd fts_commands[] = {
-	{ cmd_fts_optimize_alloc, "fts optimize", "[<namespace>]" }
+	{ cmd_fts_optimize_alloc, "fts optimize", "[<namespace>]" },
+	{ cmd_fts_rescan_alloc, "fts rescan", "[<namespace>]" }
 };
 
 void doveadm_fts_plugin_init(struct module *module ATTR_UNUSED)