#ifndef _BOUNCE_TEMPLATE_H_INCLUDED_
#define _BOUNCE_TEMPLATE_H_INCLUDED_
#include <vstream.h>
typedef struct BOUNCE_TEMPLATE {
int flags;
const char *class;
const char *origin;
const char *mime_charset;
const char *mime_encoding;
const char *from;
const char *subject;
const char *postmaster_subject;
const char **message_text;
const struct BOUNCE_TEMPLATE *prototype;
char *buffer;
} BOUNCE_TEMPLATE;
#define BOUNCE_TMPL_FLAG_NEW_BUFFER (1<<0)
#define BOUNCE_TMPL_CLASS_FAILURE "failure"
#define BOUNCE_TMPL_CLASS_DELAY "delay"
#define BOUNCE_TMPL_CLASS_SUCCESS "success"
#define BOUNCE_TMPL_CLASS_VERIFY "verify"
#define IS_FAILURE_TEMPLATE(t) ((t)->class[0] == BOUNCE_TMPL_CLASS_FAILURE[0])
#define IS_DELAY_TEMPLATE(t) ((t)->class[0] == BOUNCE_TMPL_CLASS_DELAY[0])
#define IS_SUCCESS_TEMPLATE(t) ((t)->class[0] == BOUNCE_TMPL_CLASS_SUCCESS[0])
#define IS_VERIFY_TEMPLATE(t) ((t)->class[0] == BOUNCE_TMPL_CLASS_verify[0])
#define bounce_template_encoding(t) ((t)->mime_encoding)
#define bounce_template_charset(t) ((t)->mime_charset)
typedef int (*BOUNCE_XP_PRN_FN) (VSTREAM *, const char *, ...);
typedef int (*BOUNCE_XP_PUT_FN) (VSTREAM *, const char *);
extern BOUNCE_TEMPLATE *bounce_template_create(const BOUNCE_TEMPLATE *);
extern void bounce_template_free(BOUNCE_TEMPLATE *);
extern void bounce_template_load(BOUNCE_TEMPLATE *, const char *, const char *);
extern void bounce_template_headers(BOUNCE_XP_PRN_FN, VSTREAM *, BOUNCE_TEMPLATE *, const char *, int);
extern void bounce_template_expand(BOUNCE_XP_PUT_FN, VSTREAM *, BOUNCE_TEMPLATE *);
extern void bounce_template_dump(VSTREAM *, BOUNCE_TEMPLATE *);
#define POSTMASTER_COPY 1
#define NO_POSTMASTER_COPY 0
typedef struct {
BOUNCE_TEMPLATE *failure;
BOUNCE_TEMPLATE *delay;
BOUNCE_TEMPLATE *success;
BOUNCE_TEMPLATE *verify;
} BOUNCE_TEMPLATES;
BOUNCE_TEMPLATES *bounce_templates_create(void);
void bounce_templates_free(BOUNCE_TEMPLATES *);
void bounce_templates_load(VSTREAM *, BOUNCE_TEMPLATES *);
void bounce_templates_expand(VSTREAM *, BOUNCE_TEMPLATES *);
void bounce_templates_dump(VSTREAM *, BOUNCE_TEMPLATES *);
#endif