dovecot-2.0: doveadm: Make a couple of functions global for futu...

dovecot at dovecot.org dovecot at dovecot.org
Fri Jul 23 18:14:53 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/839469d13df3
changeset: 11893:839469d13df3
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Jul 23 16:14:46 2010 +0100
description:
doveadm: Make a couple of functions global for future use.

diffstat:

 src/doveadm/doveadm-mail.c |  53 +++++++++++++++++---------
 src/doveadm/doveadm-mail.h |   8 ++++
 2 files changed, 43 insertions(+), 18 deletions(-)

diffs (123 lines):

diff -r 00033e2470ec -r 839469d13df3 src/doveadm/doveadm-mail.c
--- a/src/doveadm/doveadm-mail.c	Fri Jul 23 15:58:14 2010 +0100
+++ b/src/doveadm/doveadm-mail.c	Fri Jul 23 16:14:46 2010 +0100
@@ -216,10 +216,9 @@
 	return 1;
 }
 
-static void
-doveadm_mail_single_user(struct doveadm_mail_cmd_context *ctx,
-			 const char *username,
-			 enum mail_storage_service_flags service_flags)
+void doveadm_mail_single_user(struct doveadm_mail_cmd_context *ctx,
+			      const char *username,
+			      enum mail_storage_service_flags service_flags)
 {
 	struct mail_storage_service_input input;
 	const char *error;
@@ -332,6 +331,23 @@
 {
 }
 
+struct doveadm_mail_cmd_context *
+doveadm_mail_cmd_init(const struct doveadm_mail_cmd *cmd)
+{
+	struct doveadm_mail_cmd_context *ctx;
+
+	ctx = cmd->alloc();
+	if (ctx->v.init == NULL)
+		ctx->v.init = doveadm_mail_cmd_init_noop;
+	if (ctx->v.get_next_user == NULL)
+		ctx->v.get_next_user = doveadm_mail_cmd_get_next_user;
+	if (ctx->v.deinit == NULL)
+		ctx->v.deinit = doveadm_mail_cmd_deinit_noop;
+
+	p_array_init(&ctx->module_contexts, ctx->pool, 5);
+	return ctx;
+}
+
 static void
 doveadm_mail_cmd(const struct doveadm_mail_cmd *cmd, int argc, char *argv[])
 {
@@ -345,16 +361,7 @@
 	if (doveadm_debug)
 		service_flags |= MAIL_STORAGE_SERVICE_FLAG_DEBUG;
 
-	ctx = cmd->alloc();
-	if (ctx->v.init == NULL)
-		ctx->v.init = doveadm_mail_cmd_init_noop;
-	if (ctx->v.get_next_user == NULL)
-		ctx->v.get_next_user = doveadm_mail_cmd_get_next_user;
-	if (ctx->v.deinit == NULL)
-		ctx->v.deinit = doveadm_mail_cmd_deinit_noop;
-
-	p_array_init(&ctx->module_contexts, ctx->pool, 5);
-
+	ctx = doveadm_mail_cmd_init(cmd);
 	getopt_args = t_strconcat("Au:", ctx->getopt_args, NULL);
 	username = getenv("USER");
 	wildcard_user = NULL;
@@ -465,6 +472,17 @@
 	array_append(&doveadm_mail_cmds, cmd, 1);
 }
 
+const struct doveadm_mail_cmd *doveadm_mail_cmd_find(const char *cmd_name)
+{
+	const struct doveadm_mail_cmd *cmd;
+
+	array_foreach(&doveadm_mail_cmds, cmd) {
+		if (strcmp(cmd->name, cmd_name) == 0)
+			return cmd;
+	}
+	return NULL;
+}
+
 void doveadm_mail_usage(string_t *out)
 {
 	const struct doveadm_mail_cmd *cmd;
@@ -488,10 +506,9 @@
 {
 	const struct doveadm_mail_cmd *cmd;
 
-	array_foreach(&doveadm_mail_cmds, cmd) {
-		if (strcmp(cmd->name, cmd_name) == 0)
-			doveadm_mail_help(cmd);
-	}
+	cmd = doveadm_mail_cmd_find(cmd_name);
+	if (cmd != NULL)
+		doveadm_mail_help(cmd);
 }
 
 bool doveadm_mail_has_subcommands(const char *cmd_name)
diff -r 00033e2470ec -r 839469d13df3 src/doveadm/doveadm-mail.h
--- a/src/doveadm/doveadm-mail.h	Fri Jul 23 15:58:14 2010 +0100
+++ b/src/doveadm/doveadm-mail.h	Fri Jul 23 16:14:46 2010 +0100
@@ -5,6 +5,7 @@
 #include "doveadm-util.h"
 #include "module-context.h"
 
+enum mail_storage_service_flags;
 struct mailbox;
 struct mail_user;
 struct mail_storage_service_ctx;
@@ -61,6 +62,7 @@
 
 bool doveadm_mail_try_run(const char *cmd_name, int argc, char *argv[]);
 void doveadm_mail_register_cmd(const struct doveadm_mail_cmd *cmd);
+const struct doveadm_mail_cmd *doveadm_mail_cmd_find(const char *cmd_name);
 
 void doveadm_mail_usage(string_t *out);
 void doveadm_mail_help(const struct doveadm_mail_cmd *cmd) ATTR_NORETURN;
@@ -71,6 +73,12 @@
 void doveadm_mail_init(void);
 void doveadm_mail_deinit(void);
 
+struct doveadm_mail_cmd_context *
+doveadm_mail_cmd_init(const struct doveadm_mail_cmd *cmd);
+void doveadm_mail_single_user(struct doveadm_mail_cmd_context *ctx,
+			      const char *username,
+			      enum mail_storage_service_flags service_flags);
+
 int doveadm_mailbox_find_and_sync(struct mail_user *user, const char *mailbox,
 				  struct mailbox **box_r);
 struct mail_search_args *


More information about the dovecot-cvs mailing list