istream-header-filter.h [plain text]
#ifndef ISTREAM_HEADER_FILTER_H
#define ISTREAM_HEADER_FILTER_H
enum header_filter_flags {
HEADER_FILTER_INCLUDE = 0x01,
HEADER_FILTER_EXCLUDE = 0x02,
HEADER_FILTER_NO_CR = 0x04,
HEADER_FILTER_HIDE_BODY = 0x08,
HEADER_FILTER_ADD_MISSING_EOH = 0x10,
HEADER_FILTER_END_BODY_WITH_LF = 0x20
};
struct message_header_line;
typedef void header_filter_callback(struct message_header_line *hdr,
bool *matched, void *context);
extern header_filter_callback *null_header_filter_callback;
struct istream *
i_stream_create_header_filter(struct istream *input,
enum header_filter_flags flags,
const char *const *headers,
unsigned int headers_count,
header_filter_callback *callback, void *context);
#ifdef CONTEXT_TYPE_SAFETY
# define i_stream_create_header_filter(input, flags, headers, headers_count, \
callback, context) \
({(void)(1 ? 0 : callback((struct message_header_line *)0, \
(bool *)0, context)); \
i_stream_create_header_filter(input, flags, headers, headers_count, \
(header_filter_callback *)callback, context); })
#else
# define i_stream_create_header_filter(input, flags, headers, headers_count, \
callback, context) \
i_stream_create_header_filter(input, flags, headers, headers_count, \
(header_filter_callback *)callback, context)
#endif
#endif