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;
{
}
-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)
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;
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;
{
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)
#include "doveadm-util.h"
#include "module-context.h"
+enum mail_storage_service_flags;
struct mailbox;
struct mail_user;
struct mail_storage_service_ctx;
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;
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 *