Exemplo n.º 1
0
int imap_metadata_get_stream(struct imap_metadata_transaction *imtrans,
		      const char *entry, struct mail_attribute_value *value_r)
{
	enum mail_attribute_type type;
	const char *key;

	memset(value_r, 0, sizeof(*value_r));
	if (!imap_metadata_entry2key(imtrans, entry, &type, &key))
		return 0;
	if (imap_metadata_get_mailbox_transaction(imtrans) < 0)
		return -1;
	return mailbox_attribute_get_stream(imtrans->trans, type, key, value_r);
}
Exemplo n.º 2
0
int imap_metadata_set(struct imap_metadata_transaction *imtrans,
	const char *entry, const struct mail_attribute_value *value)
{
	enum mail_attribute_type type;
	const char *key;

	if (!imap_metadata_entry2key(imtrans, entry, &type, &key)) {
		imap_metadata_transaction_set_error(imtrans, MAIL_ERROR_PARAMS,
			"Internal mailbox attributes cannot be accessed");
		return -1;
	}

	if (imap_metadata_get_mailbox_transaction(imtrans) < 0)
		return -1;
	return (value->value == NULL ?
		mailbox_attribute_unset(imtrans->trans, type, key) :
		mailbox_attribute_set(imtrans->trans, type, key, value));
}