Skip to content

Commit

Permalink
doveadm: Use ver2 structures for all "doveadm mailbox *" commands.
Browse files Browse the repository at this point in the history
  • Loading branch information
cmouse authored and sirainen committed Feb 19, 2016
1 parent 68cc278 commit 0368f3b
Show file tree
Hide file tree
Showing 5 changed files with 131 additions and 55 deletions.
48 changes: 36 additions & 12 deletions src/doveadm/doveadm-mail-mailbox-metadata.c
Expand Up @@ -286,22 +286,46 @@ static struct doveadm_mail_cmd_context *cmd_mailbox_metadata_list_alloc(void)
return &ctx->ctx;
}

struct doveadm_mail_cmd cmd_mailbox_metadata_set = {
cmd_mailbox_metadata_set_alloc, "mailbox metadata set",
"<mailbox> <key> <value>"
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_unset = {
cmd_mailbox_metadata_unset_alloc, "mailbox metadata unset",
"<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_get = {
cmd_mailbox_metadata_get_alloc, "mailbox metadata get",
"<mailbox> <key>"
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_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_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
};
14 changes: 11 additions & 3 deletions src/doveadm/doveadm-mail-mailbox-status.c
Expand Up @@ -247,7 +247,15 @@ static struct doveadm_mail_cmd_context *cmd_mailbox_status_alloc(void)
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
};
79 changes: 61 additions & 18 deletions src/doveadm/doveadm-mail-mailbox.c
Expand Up @@ -556,27 +556,70 @@ static struct doveadm_mail_cmd_context *cmd_mailbox_unsubscribe_alloc(void)
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_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_delete = {
cmd_mailbox_delete_alloc, "mailbox delete",
"[-s] <mailbox> [...]"

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_rename = {
cmd_mailbox_rename_alloc, "mailbox rename",
"[-s] <old name> <new name>"

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_subscribe = {
cmd_mailbox_subscribe_alloc, "mailbox subscribe",
"<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_mail_cmd cmd_mailbox_unsubscribe = {
cmd_mailbox_unsubscribe_alloc, "mailbox unsubscribe",
"<mailbox> [...]"

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
};
22 changes: 11 additions & 11 deletions src/doveadm/doveadm-mail.c
Expand Up @@ -827,24 +827,24 @@ static struct doveadm_mail_cmd *mail_commands[] = {
&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,
&cmd_dsync_server
};

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)
Expand Down
23 changes: 12 additions & 11 deletions src/doveadm/doveadm-mail.h
Expand Up @@ -182,19 +182,20 @@ extern struct doveadm_mail_cmd cmd_altmove;
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) \
Expand Down

0 comments on commit 0368f3b

Please sign in to comment.