doveadm-mail-mailbox-metadata.c revision ee06e0aa58c00c9028d1bb5705996710b5c08de7
/* Copyright (c) 2014-2016 Dovecot authors, see the included COPYING file */
#include "lib.h"
#include "str.h"
#include "mail-namespace.h"
#include "mail-storage.h"
#include "doveadm-print.h"
#include "doveadm-mail.h"
#include "doveadm-mailbox-list-iter.h"
struct metadata_cmd_context {
struct doveadm_mail_cmd_context ctx;
const char *mailbox;
enum mail_attribute_type key_type;
const char *key;
struct mail_attribute_value value;
};
static int
{
struct mail_namespace *ns;
struct mailbox_transaction_context *trans;
int ret;
if (mailbox_open(box) < 0) {
i_error("Failed to open mailbox: %s",
mailbox_free(&box);
return -1;
}
if (ret < 0) {
i_error("Failed to set attribute: %s",
} else if (mailbox_transaction_commit(&trans) < 0) {
i_error("Failed to commit transaction: %s",
ret = -1;
}
mailbox_free(&box);
return ret;
}
static void
cmd_mailbox_metadata_parse_key(const char *arg,
enum mail_attribute_type *type_r,
const char **key_r)
{
*key_r = "";
*key_r = "";
} else {
"Must begin with /private or /shared", arg);
}
}
static void
const char *const args[])
{
const char *key;
doveadm_mail_help_name("mailbox metadata set");
}
static struct doveadm_mail_cmd_context *cmd_mailbox_metadata_set_alloc(void)
{
struct metadata_cmd_context *ctx;
}
static void
const char *const args[])
{
const char *key;
doveadm_mail_help_name("mailbox metadata unset");
}
static struct doveadm_mail_cmd_context *cmd_mailbox_metadata_unset_alloc(void)
{
struct metadata_cmd_context *ctx;
}
static int
{
struct mail_namespace *ns;
struct mail_attribute_value value;
int ret;
if (mailbox_open(box) < 0) {
i_error("Failed to open mailbox: %s",
mailbox_free(&box);
return -1;
}
if (ret < 0) {
i_error("Failed to get attribute: %s",
} else if (ret == 0) {
/* not found, print as empty */
doveadm_print("");
} else {
}
mailbox_free(&box);
return ret;
}
static void
const char *const args[])
{
const char *key;
doveadm_mail_help_name("mailbox metadata get");
}
static struct doveadm_mail_cmd_context *cmd_mailbox_metadata_get_alloc(void)
{
struct metadata_cmd_context *ctx;
}
static int
enum mail_attribute_type type)
{
struct mailbox_attribute_iter *iter;
const char *key;
if (mailbox_attribute_iter_deinit(&iter) < 0) {
i_error("Mailbox %s: Failed to iterate mailbox attributes: %s",
return -1;
}
return 0;
}
static int
{
struct mail_namespace *ns;
int ret = 0;
if (mailbox_open(box) < 0) {
i_error("Failed to open mailbox: %s",
mailbox_free(&box);
return -1;
}
ret = -1;
}
}
ret = -1;
}
}
mailbox_free(&box);
return ret;
}
static void
const char *const args[])
{
doveadm_mail_help_name("mailbox metadata list");
}
static struct doveadm_mail_cmd_context *cmd_mailbox_metadata_list_alloc(void)
{
struct metadata_cmd_context *ctx;
}
.name = "mailbox metadata set",
};
.name = "mailbox metadata unset",
};
.name = "mailbox metadata get",
};
.name = "mailbox metadata list",
};