doveadm-mail-mailbox-metadata.c revision 9384ef699a57687ce6dbdae7d686181f4791b1e5
5f5870385cff47efd2f58e7892f251cf13761528Timo Sirainen/* Copyright (c) 2014-2017 Dovecot authors, see the included COPYING file */
53b32ab10cd22d7e762db4d813298ff72bff4b3dTimo Sirainen const char *key;
6f9560d31a6fffeed234dc3b841169c40db1c5e1Timo Sirainencmd_mailbox_metadata_open_mailbox(struct metadata_cmd_context *mctx,
6f9560d31a6fffeed234dc3b841169c40db1c5e1Timo Sirainen const char *op,
a96307ca3944c434f2c50f47c12985bcd34445b5Timo Sirainen mctx->empty_mailbox_name = mctx->mailbox[0] == '\0';
6f9560d31a6fffeed234dc3b841169c40db1c5e1Timo Sirainen "mailbox name cannot be empty");
b710c5119d3b66572eb87a15ac6d8dcd192f7cc5Timo Sirainen /* server attribute */
b710c5119d3b66572eb87a15ac6d8dcd192f7cc5Timo Sirainen *ns_r = mail_namespace_find_inbox(user->namespaces);
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen *box_r = mailbox_alloc((*ns_r)->list, "INBOX", 0);
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen mctx->key = t_strconcat(MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER,
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen /* mailbox attributes */
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen *ns_r = mail_namespace_find(user->namespaces, mctx->mailbox);
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen *box_r = mailbox_alloc((*ns_r)->list, mctx->mailbox, 0);
70afae43cc78ea6ecca83f6c587072c442a15ec1Timo Sirainen doveadm_mail_failed_mailbox(&mctx->ctx, *box_r);
70afae43cc78ea6ecca83f6c587072c442a15ec1Timo Sirainencmd_mailbox_metadata_set_run(struct doveadm_mail_cmd_context *_ctx,
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen struct metadata_cmd_context *ctx = (struct metadata_cmd_context *)_ctx;
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen ret = cmd_mailbox_metadata_open_mailbox(ctx, user, "set attribute",
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen trans = mailbox_transaction_begin(box, ctx->empty_mailbox_name ?
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen mailbox_attribute_unset(trans, ctx->key_type, ctx->key) :
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen mailbox_attribute_set(trans, ctx->key_type, ctx->key, &ctx->value);
6f9560d31a6fffeed234dc3b841169c40db1c5e1Timo Sirainen } else if (mailbox_transaction_commit(&trans) < 0) {
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainencmd_mailbox_metadata_parse_key(const char *arg,
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen const char **key_r)
53b32ab10cd22d7e762db4d813298ff72bff4b3dTimo Sirainen } else if (strncmp(arg, "/shared/", 8) == 0) {
e156adefc1260d31a145df2f5e9b3c82050d4163Timo Sirainen i_fatal_status(EX_USAGE, "Invalid metadata key '%s': "
6f9560d31a6fffeed234dc3b841169c40db1c5e1Timo Sirainencmd_mailbox_metadata_set_init(struct doveadm_mail_cmd_context *_ctx,
6f9560d31a6fffeed234dc3b841169c40db1c5e1Timo Sirainen const char *const args[])
6f9560d31a6fffeed234dc3b841169c40db1c5e1Timo Sirainen struct metadata_cmd_context *ctx = (struct metadata_cmd_context *)_ctx;
766814de3fbfeb8ca7c4d6b592f6ca09f14d5690Timo Sirainen const char *key;
766814de3fbfeb8ca7c4d6b592f6ca09f14d5690Timo Sirainen doveadm_mail_help_name("mailbox metadata set");
766814de3fbfeb8ca7c4d6b592f6ca09f14d5690Timo Sirainen cmd_mailbox_metadata_parse_key(args[1], &ctx->key_type, &key);
766814de3fbfeb8ca7c4d6b592f6ca09f14d5690Timo Sirainen ctx->value.value = p_strdup(_ctx->pool, args[2]);
766814de3fbfeb8ca7c4d6b592f6ca09f14d5690Timo Sirainencmd_mailbox_metadata_parse_arg(struct doveadm_mail_cmd_context *_ctx, int c)
return FALSE;
return TRUE;
const char *const args[])
const char *key;
int ret;
if (ret != 0)
return ret;
if (ret < 0) {
} else if (ret == 0) {
return ret;
const char *const args[])
const char *key;
const char *key;
int ret = 0;
if (ret != 0)
return ret;
return ret;
const char *const args[])