changeset 19771:7307f2716d6f

doveadm: Use ver2 structures for all "doveadm mailbox *" commands.
author Aki Tuomi <aki.tuomi@dovecot.fi>
date Fri, 19 Feb 2016 15:03:51 +0200
parents 7a5ab5070433
children f8cbc32dcd1e
files src/doveadm/doveadm-mail-mailbox-metadata.c src/doveadm/doveadm-mail-mailbox-status.c src/doveadm/doveadm-mail-mailbox.c src/doveadm/doveadm-mail.c src/doveadm/doveadm-mail.h
diffstat 5 files changed, 134 insertions(+), 58 deletions(-) [+]
line wrap: on
line diff
--- a/src/doveadm/doveadm-mail-mailbox-metadata.c	Fri Feb 19 15:02:56 2016 +0200
+++ b/src/doveadm/doveadm-mail-mailbox-metadata.c	Fri Feb 19 15:03:51 2016 +0200
@@ -286,22 +286,46 @@
 	return &ctx->ctx;
 }
 
-struct doveadm_mail_cmd cmd_mailbox_metadata_set = {
-	cmd_mailbox_metadata_set_alloc, "mailbox metadata set",
-	"<mailbox> <key> <value>"
-};
-
-struct doveadm_mail_cmd cmd_mailbox_metadata_unset = {
-	cmd_mailbox_metadata_unset_alloc, "mailbox metadata unset",
-	"<mailbox> <key>"
+struct doveadm_cmd_ver2 doveadm_cmd_mailbox_metadata_set_ver2 = {
+	.name = "mailbox metadata set",
+	.mail_cmd = cmd_mailbox_metadata_set_alloc,
+	.usage = "<mailbox> <key> <value>",
+DOVEADM_CMD_PARAMS_START
+DOVEADM_CMD_MAIL_COMMON
+DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAM(":", "key", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAM(":", "value", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAMS_END
 };
 
-struct doveadm_mail_cmd cmd_mailbox_metadata_get = {
-	cmd_mailbox_metadata_get_alloc, "mailbox metadata get",
-	"<mailbox> <key>"
+struct doveadm_cmd_ver2 doveadm_cmd_mailbox_metadata_unset_ver2 = {
+	.name = "mailbox metadata unset",
+	.mail_cmd = cmd_mailbox_metadata_unset_alloc,
+	.usage = "<mailbox> <key>",
+DOVEADM_CMD_PARAMS_START
+DOVEADM_CMD_MAIL_COMMON
+DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAM(":", "key", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAMS_END
 };
 
-struct doveadm_mail_cmd cmd_mailbox_metadata_list = {
-	cmd_mailbox_metadata_list_alloc, "mailbox metadata list",
-	"<mailbox> [<key prefix>]"
+struct doveadm_cmd_ver2 doveadm_cmd_mailbox_metadata_get_ver2 = {
+	.name = "mailbox metadata get",
+	.mail_cmd = cmd_mailbox_metadata_get_alloc,
+	.usage = "<mailbox> <key>",
+DOVEADM_CMD_PARAMS_START
+DOVEADM_CMD_MAIL_COMMON
+DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAM(":", "key", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAMS_END
 };
+
+struct doveadm_cmd_ver2 doveadm_cmd_mailbox_metadata_list_ver2 = {
+	.name = "mailbox metadata list",
+	.mail_cmd = cmd_mailbox_metadata_list_alloc,
+	.usage = "<mailbox> [<key prefix>]",
+DOVEADM_CMD_PARAMS_START
+DOVEADM_CMD_MAIL_COMMON
+DOVEADM_CMD_PARAM(":", "key-prefix", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAMS_END
+};
--- a/src/doveadm/doveadm-mail-mailbox-status.c	Fri Feb 19 15:02:56 2016 +0200
+++ b/src/doveadm/doveadm-mail-mailbox-status.c	Fri Feb 19 15:03:51 2016 +0200
@@ -247,7 +247,15 @@
 	return &ctx->ctx;
 }
 
-struct doveadm_mail_cmd cmd_mailbox_status = {
-	cmd_mailbox_status_alloc, "mailbox status",
-	"[-t] <fields> <mailbox mask> [...]"
+struct doveadm_cmd_ver2 doveadm_cmd_mailbox_status_ver2 = {
+        .name = "mailbox status",
+        .mail_cmd = cmd_mailbox_status_alloc,
+        .usage = "<mailbox> [...]",
+DOVEADM_CMD_PARAMS_START
+DOVEADM_CMD_MAIL_COMMON
+DOVEADM_CMD_PARAM("t", "total-sum", CMD_PARAM_BOOL, 0)
+DOVEADM_CMD_PARAM("f:", "field", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAM(":", "fieldstr", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL | CMD_PARAM_FLAG_DO_NOT_EXPOSE) /* FIXME: horrible hack, remove me when possible */
+DOVEADM_CMD_PARAM(":", "mask", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAMS_END
 };
--- a/src/doveadm/doveadm-mail-mailbox.c	Fri Feb 19 15:02:56 2016 +0200
+++ b/src/doveadm/doveadm-mail-mailbox.c	Fri Feb 19 15:03:51 2016 +0200
@@ -556,27 +556,70 @@
 	return cmd_mailbox_subscriptions_alloc(FALSE);
 }
 
-struct doveadm_mail_cmd cmd_mailbox_list = {
-	cmd_mailbox_list_alloc, "mailbox list",
-	"[-7|-8] [-s] [<mailbox mask> [...]]"
+struct doveadm_cmd_ver2 doveadm_cmd_mailbox_list_ver2 = {
+	.name = "mailbox list",
+	.mail_cmd = cmd_mailbox_list_alloc,
+	.usage = "[-7|-8] [-s] [<mailbox mask> [...]]",
+DOVEADM_CMD_PARAMS_START
+DOVEADM_CMD_MAIL_COMMON
+DOVEADM_CMD_PARAM("7", "mutf7", CMD_PARAM_BOOL, 0)
+DOVEADM_CMD_PARAM("8", "no-mutf7", CMD_PARAM_BOOL, 0)
+DOVEADM_CMD_PARAM("s", "subscriptions", CMD_PARAM_BOOL, 0)
+DOVEADM_CMD_PARAM(":", "mask", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAMS_END
 };
-struct doveadm_mail_cmd cmd_mailbox_create = {
-	cmd_mailbox_create_alloc, "mailbox create",
-	"[-s] [-g <guid>] <mailbox> [...]"
-};
-struct doveadm_mail_cmd cmd_mailbox_delete = {
-	cmd_mailbox_delete_alloc, "mailbox delete",
-	"[-s] <mailbox> [...]"
+
+struct doveadm_cmd_ver2 doveadm_cmd_mailbox_create_ver2 = {
+	.name = "mailbox create",
+	.mail_cmd = cmd_mailbox_create_alloc,
+	.usage = "[-s] [-g <guid>] <mailbox> [...]",
+DOVEADM_CMD_PARAMS_START
+DOVEADM_CMD_MAIL_COMMON
+DOVEADM_CMD_PARAM("s", "subscriptions", CMD_PARAM_BOOL, 0)
+DOVEADM_CMD_PARAM("g", "guid", CMD_PARAM_STR, 0)
+DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAMS_END
 };
-struct doveadm_mail_cmd cmd_mailbox_rename = {
-	cmd_mailbox_rename_alloc, "mailbox rename",
-	"[-s] <old name> <new name>"
+
+struct doveadm_cmd_ver2 doveadm_cmd_mailbox_delete_ver2 = {
+	.name = "mailbox delete",
+        .mail_cmd = cmd_mailbox_delete_alloc,
+        .usage = "[-s] <mailbox> [...]",
+DOVEADM_CMD_PARAMS_START
+DOVEADM_CMD_MAIL_COMMON
+DOVEADM_CMD_PARAM("s", "subscriptions", CMD_PARAM_BOOL, 0)
+DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAMS_END
 };
-struct doveadm_mail_cmd cmd_mailbox_subscribe = {
-	cmd_mailbox_subscribe_alloc, "mailbox subscribe",
-	"<mailbox> [...]"
+
+struct doveadm_cmd_ver2 doveadm_cmd_mailbox_rename_ver2 = {
+	.name = "mailbox rename",
+	.mail_cmd = cmd_mailbox_rename_alloc,
+	.usage = "[-s] <old name> <new name>",
+DOVEADM_CMD_PARAMS_START
+DOVEADM_CMD_MAIL_COMMON
+DOVEADM_CMD_PARAM("s", "subscriptions", CMD_PARAM_BOOL, 0)
+DOVEADM_CMD_PARAM(":", "old", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAM(":", "new", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAMS_END
 };
-struct doveadm_mail_cmd cmd_mailbox_unsubscribe = {
-	cmd_mailbox_unsubscribe_alloc, "mailbox unsubscribe",
-	"<mailbox> [...]"
+
+struct doveadm_cmd_ver2 doveadm_cmd_mailbox_subscribe_ver2 = {
+	.name = "mailbox subscribe",
+	.mail_cmd = cmd_mailbox_subscribe_alloc,
+	.usage = "<mailbox> [...]",
+DOVEADM_CMD_PARAMS_START
+DOVEADM_CMD_MAIL_COMMON
+DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAMS_END
 };
+
+struct doveadm_cmd_ver2 doveadm_cmd_mailbox_unsubscribe_ver2 = {
+	.name = "mailbox unsubscribe",
+	.mail_cmd = cmd_mailbox_unsubscribe_alloc,
+	.usage = "<mailbox> [...]",
+DOVEADM_CMD_PARAMS_START
+DOVEADM_CMD_MAIL_COMMON
+DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAMS_END
+};
--- a/src/doveadm/doveadm-mail.c	Fri Feb 19 15:02:56 2016 +0200
+++ b/src/doveadm/doveadm-mail.c	Fri Feb 19 15:03:51 2016 +0200
@@ -827,17 +827,6 @@
 	&cmd_copy,
 	&cmd_deduplicate,
 	&cmd_move,
-	&cmd_mailbox_list,
-	&cmd_mailbox_create,
-	&cmd_mailbox_delete,
-	&cmd_mailbox_rename,
-	&cmd_mailbox_subscribe,
-	&cmd_mailbox_unsubscribe,
-	&cmd_mailbox_status,
-	&cmd_mailbox_metadata_set,
-	&cmd_mailbox_metadata_unset,
-	&cmd_mailbox_metadata_get,
-	&cmd_mailbox_metadata_list,
 	&cmd_batch,
 	&cmd_dsync_backup,
 	&cmd_dsync_mirror,
@@ -845,6 +834,17 @@
 };
 
 static struct doveadm_cmd_ver2 *mail_commands_ver2[] = {
+	&doveadm_cmd_mailbox_metadata_set_ver2,
+	&doveadm_cmd_mailbox_metadata_unset_ver2,
+	&doveadm_cmd_mailbox_metadata_get_ver2,
+	&doveadm_cmd_mailbox_metadata_list_ver2,
+	&doveadm_cmd_mailbox_status_ver2,
+	&doveadm_cmd_mailbox_list_ver2,
+	&doveadm_cmd_mailbox_create_ver2,
+	&doveadm_cmd_mailbox_delete_ver2,
+	&doveadm_cmd_mailbox_rename_ver2,
+	&doveadm_cmd_mailbox_subscribe_ver2,
+	&doveadm_cmd_mailbox_unsubscribe_ver2
 };
 
 void doveadm_mail_init(void)
--- a/src/doveadm/doveadm-mail.h	Fri Feb 19 15:02:56 2016 +0200
+++ b/src/doveadm/doveadm-mail.h	Fri Feb 19 15:03:51 2016 +0200
@@ -182,19 +182,20 @@
 extern struct doveadm_mail_cmd cmd_copy;
 extern struct doveadm_mail_cmd cmd_deduplicate;
 extern struct doveadm_mail_cmd cmd_move;
-extern struct doveadm_mail_cmd cmd_mailbox_list;
-extern struct doveadm_mail_cmd cmd_mailbox_create;
-extern struct doveadm_mail_cmd cmd_mailbox_delete;
-extern struct doveadm_mail_cmd cmd_mailbox_rename;
-extern struct doveadm_mail_cmd cmd_mailbox_subscribe;
-extern struct doveadm_mail_cmd cmd_mailbox_unsubscribe;
-extern struct doveadm_mail_cmd cmd_mailbox_status;
-extern struct doveadm_mail_cmd cmd_mailbox_metadata_set;
-extern struct doveadm_mail_cmd cmd_mailbox_metadata_unset;
-extern struct doveadm_mail_cmd cmd_mailbox_metadata_get;
-extern struct doveadm_mail_cmd cmd_mailbox_metadata_list;
 extern struct doveadm_mail_cmd cmd_batch;
 
+extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_metadata_set_ver2;
+extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_metadata_unset_ver2;
+extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_metadata_get_ver2;
+extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_metadata_list_ver2;
+extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_status_ver2;
+extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_list_ver2;
+extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_create_ver2;
+extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_delete_ver2;
+extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_rename_ver2;
+extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_subscribe_ver2;
+extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_unsubscribe_ver2;
+
 #define DOVEADM_CMD_MAIL_COMMON \
 DOVEADM_CMD_PARAM("A", "all-users", CMD_PARAM_BOOL, 0) \
 DOVEADM_CMD_PARAM("S:", "socket-path", CMD_PARAM_STR, 0) \