dovecot-2.2: doveadm mailbox create: Added -g <guid> parameter t...
dovecot at dovecot.org
dovecot at dovecot.org
Thu Oct 24 11:25:48 EEST 2013
details: http://hg.dovecot.org/dovecot-2.2/rev/f89e645cba90
changeset: 16878:f89e645cba90
user: Timo Sirainen <tss at iki.fi>
date: Thu Oct 24 11:25:41 2013 +0300
description:
doveadm mailbox create: Added -g <guid> parameter to create mailbox with specific GUID.
diffstat:
src/doveadm/doveadm-mail-mailbox.c | 34 +++++++++++++++++++++++++++++-----
1 files changed, 29 insertions(+), 5 deletions(-)
diffs (77 lines):
diff -r 219f869cbd0d -r f89e645cba90 src/doveadm/doveadm-mail-mailbox.c
--- a/src/doveadm/doveadm-mail-mailbox.c Wed Oct 23 16:51:55 2013 +0300
+++ b/src/doveadm/doveadm-mail-mailbox.c Thu Oct 24 11:25:41 2013 +0300
@@ -24,6 +24,12 @@
ARRAY_TYPE(const_string) mailboxes;
};
+struct create_cmd_context {
+ struct doveadm_mailbox_cmd_context ctx;
+ ARRAY_TYPE(const_string) mailboxes;
+ struct mailbox_update update;
+};
+
struct delete_cmd_context {
struct doveadm_mailbox_cmd_context ctx;
ARRAY_TYPE(const_string) mailboxes;
@@ -197,7 +203,7 @@
cmd_mailbox_create_run(struct doveadm_mail_cmd_context *_ctx,
struct mail_user *user)
{
- struct mailbox_cmd_context *ctx = (struct mailbox_cmd_context *)_ctx;
+ struct create_cmd_context *ctx = (struct create_cmd_context *)_ctx;
struct mail_namespace *ns;
struct mailbox *box;
const char *const *namep;
@@ -216,7 +222,7 @@
}
box = mailbox_alloc(ns->list, name, 0);
- if (mailbox_create(box, NULL, directory) < 0) {
+ if (mailbox_create(box, &ctx->update, directory) < 0) {
i_error("Can't create mailbox %s: %s", name,
mailbox_get_last_error(box, NULL));
doveadm_mail_failed_mailbox(_ctx, box);
@@ -252,13 +258,31 @@
}
}
+static bool
+cmd_mailbox_create_parse_arg(struct doveadm_mail_cmd_context *_ctx, int c)
+{
+ struct create_cmd_context *ctx = (struct create_cmd_context *)_ctx;
+
+ switch (c) {
+ case 'g':
+ if (guid_128_from_string(optarg, ctx->update.mailbox_guid) < 0)
+ doveadm_mail_help_name("mailbox create");
+ break;
+ default:
+ return FALSE;
+ }
+ return TRUE;
+}
+
static struct doveadm_mail_cmd_context *cmd_mailbox_create_alloc(void)
{
- struct mailbox_cmd_context *ctx;
+ struct create_cmd_context *ctx;
- ctx = doveadm_mailbox_cmd_alloc(struct mailbox_cmd_context);
+ ctx = doveadm_mailbox_cmd_alloc(struct create_cmd_context);
ctx->ctx.ctx.v.init = cmd_mailbox_create_init;
ctx->ctx.ctx.v.run = cmd_mailbox_create_run;
+ ctx->ctx.ctx.v.parse_arg = cmd_mailbox_create_parse_arg;
+ ctx->ctx.ctx.getopt_args = "g:";
p_array_init(&ctx->mailboxes, ctx->ctx.ctx.pool, 16);
return &ctx->ctx.ctx;
}
@@ -532,7 +556,7 @@
};
struct doveadm_mail_cmd cmd_mailbox_create = {
cmd_mailbox_create_alloc, "mailbox create",
- "[-s] <mailbox> [...]"
+ "[-s] [-g <guid>] <mailbox> [...]"
};
struct doveadm_mail_cmd cmd_mailbox_delete = {
cmd_mailbox_delete_alloc, "mailbox delete",
More information about the dovecot-cvs
mailing list