#ifndef MAILINFO_H
#define MAILINFO_H

#include "strbuf.h"

#define MAX_BOUNDARIES 5

struct repository;

enum quoted_cr_action {
	quoted_cr_unset = -1,
	quoted_cr_nowarn,
	quoted_cr_warn,
	quoted_cr_strip,
};

struct mailinfo {
	FILE *input;
	FILE *output;
	FILE *patchfile;

	struct strbuf name;
	struct strbuf email;
	int keep_subject;
	int keep_non_patch_brackets_in_subject;
	int quoted_cr; /* enum quoted_cr_action */
	int add_message_id;
	int use_scissors;
	int use_inbody_headers;
	const char *metainfo_charset;

	struct strbuf *content[MAX_BOUNDARIES];
	struct strbuf **content_top;
	struct strbuf charset;
	unsigned int format_flowed:1;
	unsigned int delsp:1;
	unsigned int have_quoted_cr:1;
	char *message_id;
	enum  {
		TE_DONTCARE, TE_QP, TE_BASE64
	} transfer_encoding;
	int patch_lines;
	int filter_stage; /* still reading log or are we copying patch? */
	int header_stage; /* still checking in-body headers? */
	struct strbuf inbody_header_accum;
	struct strbuf **p_hdr_data;
	struct strbuf **s_hdr_data;

	struct strbuf log_message;
	int input_error;
};

int mailinfo_parse_quoted_cr_action(const char *actionstr, int *action);
void setup_mailinfo(struct repository *r, struct mailinfo *);
int mailinfo(struct mailinfo *, const char *msg, const char *patch);
void clear_mailinfo(struct mailinfo *);

#endif /* MAILINFO_H */
