From 0779e926687b319fe1bcc0f1010ba7f88023e789 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Fri, 23 Jul 2010 16:14:46 +0100 Subject: [PATCH] doveadm: Make a couple of functions global for future use. --- src/doveadm/doveadm-mail.c | 53 +++++++++++++++++++++++++------------- src/doveadm/doveadm-mail.h | 8 ++++++ 2 files changed, 43 insertions(+), 18 deletions(-) diff --git a/src/doveadm/doveadm-mail.c b/src/doveadm/doveadm-mail.c index c259c555c8..8c0a84ac43 100644 --- a/src/doveadm/doveadm-mail.c +++ b/src/doveadm/doveadm-mail.c @@ -216,10 +216,9 @@ doveadm_mail_next_user(struct doveadm_mail_cmd_context *ctx, 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,18 +331,10 @@ doveadm_mail_cmd_deinit_noop(struct doveadm_mail_cmd_context *ctx ATTR_UNUSED) { } -static void -doveadm_mail_cmd(const struct doveadm_mail_cmd *cmd, int argc, char *argv[]) +struct doveadm_mail_cmd_context * +doveadm_mail_cmd_init(const struct doveadm_mail_cmd *cmd) { - enum mail_storage_service_flags service_flags = - MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT; struct doveadm_mail_cmd_context *ctx; - const char *getopt_args, *username, *wildcard_user; - bool iter_single_user; - int c; - - if (doveadm_debug) - service_flags |= MAIL_STORAGE_SERVICE_FLAG_DEBUG; ctx = cmd->alloc(); if (ctx->v.init == NULL) @@ -354,7 +345,23 @@ doveadm_mail_cmd(const struct doveadm_mail_cmd *cmd, int argc, char *argv[]) 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[]) +{ + enum mail_storage_service_flags service_flags = + MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT; + struct doveadm_mail_cmd_context *ctx; + const char *getopt_args, *username, *wildcard_user; + bool iter_single_user; + int c; + if (doveadm_debug) + service_flags |= MAIL_STORAGE_SERVICE_FLAG_DEBUG; + + 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 @@ void doveadm_mail_register_cmd(const struct doveadm_mail_cmd *cmd) 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 @@ void doveadm_mail_try_help_name(const char *cmd_name) { 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 --git a/src/doveadm/doveadm-mail.h b/src/doveadm/doveadm-mail.h index 9ac2f80832..e62d253ec0 100644 --- a/src/doveadm/doveadm-mail.h +++ b/src/doveadm/doveadm-mail.h @@ -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 @@ extern struct doveadm_mail_cmd_module_register doveadm_mail_cmd_module_register; 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 @@ bool doveadm_mail_has_subcommands(const char *cmd_name); 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 * -- 2.47.3