view src/lib-storage/index/dbox-common/dbox-save.h @ 14682:d0d7b810646b

Make sure we check all the functions' return values. Minor API changes to simplify this. Checked using a patched clang that adds attribute(warn_unused_result) to all functions. This commit fixes several error handling mistakes.
author Timo Sirainen <tss@iki.fi>
date Mon, 25 Jun 2012 01:14:03 +0300
parents c93ca5e46a8a
children 7fb33baa8201
line wrap: on
line source

#ifndef DBOX_SAVE_H
#define DBOX_SAVE_H

#include "dbox-storage.h"

struct dbox_save_context {
	struct mail_save_context ctx;
	struct mail_index_transaction *trans;

	/* updated for each appended mail: */
	uint32_t seq;
	struct istream *input;
	struct mail *mail;

	struct dbox_file *cur_file;
	struct ostream *dbox_output;

	unsigned int failed:1;
	unsigned int finished:1;
};

void dbox_save_begin(struct dbox_save_context *ctx, struct istream *input);
int dbox_save_continue(struct mail_save_context *_ctx);
void dbox_save_end(struct dbox_save_context *ctx);

void dbox_save_write_metadata(struct mail_save_context *ctx,
			      struct ostream *output, uoff_t output_msg_size,
			      const char *orig_mailbox_name,
			      guid_128_t guid_128_r) ATTR_NULL(4);

void dbox_save_add_to_index(struct dbox_save_context *ctx);

#endif