imap-fetch.c revision c1f8d7ab0d8b15f27bbf33324000fc39751d8564
c25356d5978632df6203437e1953bcb29e0c736fTimo Sirainen/* Copyright (c) 2002-2018 Dovecot authors, see the included COPYING file */
c0435c854a0e7246373b9752d163095cc4fbe985Timo Sirainen "\"text\" \"plain\" NIL NIL NIL \"7bit\" 0 0"
f40e6ef5190f68c2fd0e94c0b001bdf7d160236aTimo Sirainen "(NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL)"
f86c599ead3602dc2d63a473cc13c1119978f538Timo Sirainenstatic ARRAY(struct imap_fetch_handler) fetch_handlers;
f86c599ead3602dc2d63a473cc13c1119978f538Timo Sirainenstatic int imap_fetch_handler_cmp(const struct imap_fetch_handler *h1,
15581297511b658a29c707c6031a258bab7bf1a5Stephan Boschvoid imap_fetch_handlers_register(const struct imap_fetch_handler *handlers,
15581297511b658a29c707c6031a258bab7bf1a5Stephan Bosch array_append(&fetch_handlers, handlers, count);
15581297511b658a29c707c6031a258bab7bf1a5Stephan Bosch array_sort(&fetch_handlers, imap_fetch_handler_cmp);
cc77c1cfe8d072765f793474f49fecd897525466Stephan Boschvoid imap_fetch_handler_unregister(const char *name)
cc77c1cfe8d072765f793474f49fecd897525466Stephan Bosch const struct imap_fetch_handler *handler, *first_handler;
cc77c1cfe8d072765f793474f49fecd897525466Stephan Bosch first_handler = array_idx(&fetch_handlers, 0);
fbad2d10747ac76a29b3a9dcfb4e7e67236ab872Stephan Bosch array_delete(&fetch_handlers, handler - first_handler, 1);
c10706d231f0690e934affdf18daa9b9a41814c6Timo Sirainenimap_fetch_handler_bsearch(const char *name, const struct imap_fetch_handler *h)
const char *lookup_name, *p;
return FALSE;
return FALSE;
return TRUE;
i_unreached();
const char **error_r)
const char *str;
struct imap_fetch_context *
return ctx;
const char *nil_reply,
to write the output in fetch_ctx->state.cur_str. The cur_str is then
struct imap_fetch_context_handler h;
i_zero(&h);
if (!h.buffered)
unsigned int i, count;
unsigned int i, count;
int ret = 0;
next_uid++;
else if (++i < count)
else if (++i < count)
if (i < count) {
for (; i < count; i++) {
return ret;
int ret = 0;
&expunged_uids_range) < 0) {
return ret;
const char *const *headers;
MAIL_FETCH_STREAM_BODY)) == 0)) {
const unsigned char *data;
if (len == 0)
len--;
return FALSE;
return TRUE;
unsigned int count;
int ret;
if (ret == 0)
if (ret < 0) {
if (ret <= 0)
return ret;
if (cancel)
T_BEGIN {
const struct imap_fetch_context_handler *h =
h->context);
} T_END;
if (ret == 0)
if (ret < 0) {
int ret;
if (ret < 0)
return ret;
int ret;
if (ret < 0) {
return ret;
const char *body;
return TRUE;
const char *bodystructure;
&bodystructure) < 0)
return TRUE;
const char *envelope;
return TRUE;
const char *const *keywords;
return TRUE;
return TRUE;
return FALSE;
return TRUE;
return TRUE;
const char *value;
return TRUE;
const char *name;
return TRUE;
return TRUE;
return TRUE;
static const struct imap_fetch_handler
void imap_fetch_handlers_init(void)
void imap_fetch_handlers_deinit(void)