#include <vstring.h>
#include <bounce_log.h>
extern int bounce_append_service(char *, char *, char *, char *);
extern int bounce_notify_service(char *, char *, char *, char *, char *, int);
extern int bounce_notify_verp(char *, char *, char *, char *, char *, char *, int);
extern int bounce_one_service(char *, char *, char *, char *, char *, char *);
extern VSTRING *bounce_cleanup_path;
extern void bounce_cleanup_register(char *, char *);
extern void bounce_cleanup_log(void);
extern void bounce_cleanup_unregister(void);
#define bounce_cleanup_registered() (bounce_cleanup_path != 0)
typedef struct {
const char *service;
const char *queue_name;
const char *queue_id;
const char *mime_encoding;
const char *mime_boundary;
int flush;
VSTRING *buf;
VSTREAM *orig_fp;
long orig_offs;
time_t arrival_time;
BOUNCE_LOG *log_handle;
} BOUNCE_INFO;
extern BOUNCE_INFO *bounce_mail_init(const char *, const char *, const char *, const char *, int);
extern BOUNCE_INFO *bounce_mail_one_init(const char *, const char *, const char *, const char *, const char *);
extern void bounce_mail_free(BOUNCE_INFO *);
extern int bounce_header(VSTREAM *, BOUNCE_INFO *, const char *);
extern int bounce_boilerplate(VSTREAM *, BOUNCE_INFO *);
extern int bounce_recipient_log(VSTREAM *, BOUNCE_INFO *);
extern int bounce_diagnostic_log(VSTREAM *, BOUNCE_INFO *);
extern int bounce_header_dsn(VSTREAM *, BOUNCE_INFO *);
extern int bounce_recipient_dsn(VSTREAM *, BOUNCE_INFO *);
extern int bounce_diagnostic_dsn(VSTREAM *, BOUNCE_INFO *);
extern int bounce_original(VSTREAM *, BOUNCE_INFO *, int);