]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm: Make a couple of functions global for future use.
authorTimo Sirainen <tss@iki.fi>
Fri, 23 Jul 2010 15:14:46 +0000 (16:14 +0100)
committerTimo Sirainen <tss@iki.fi>
Fri, 23 Jul 2010 15:14:46 +0000 (16:14 +0100)
src/doveadm/doveadm-mail.c
src/doveadm/doveadm-mail.h

index c259c555c8881334659280914621acc2d8f7d2b6..8c0a84ac43508bcedee8a5aaac64f081aa1de51c 100644 (file)
@@ -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)
index 9ac2f8083255b460c5b7be64cb560eb7b560653e..e62d253ec09f1f0ec0a7faa1183f77cbf92cf4a9 100644 (file)
@@ -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 *