fts-storage.c revision a1761856683b4bf745eb4e32cefabeb851efb301
dcc76bb1e1bb287e3e71e6a39a7ca207fab0eaa8Timo Sirainen/* Copyright (C) 2006 Timo Sirainen */
9d7451b57769988f7e3e41cd8790e65429ffc5c7Timo Sirainen *((void **)array_idx_modifiable(&(obj)->module_contexts, \
9d7451b57769988f7e3e41cd8790e65429ffc5c7Timo Sirainen const char *env;
dcc76bb1e1bb287e3e71e6a39a7ca207fab0eaa8Timo Sirainenstatic unsigned int fts_storage_module_id = 0;
dcc76bb1e1bb287e3e71e6a39a7ca207fab0eaa8Timo Sirainenstatic int fts_mailbox_close(struct mailbox *box)
9d7451b57769988f7e3e41cd8790e65429ffc5c7Timo Sirainenstatic int uid_range_to_seq(struct mailbox *box,
dcc76bb1e1bb287e3e71e6a39a7ca207fab0eaa8Timo Sirainen unsigned int i, count;
dcc76bb1e1bb287e3e71e6a39a7ca207fab0eaa8Timo Sirainen for (i = 0; i < count; i++) {
9d7451b57769988f7e3e41cd8790e65429ffc5c7Timo Sirainen if (mailbox_get_uids(box, range[i].seq1, range[i].seq2,
d6500661eb699ff335ac570c8646b6e067e1aac6Timo Sirainenstatic int fts_build_mail_flush(struct fts_storage_build_context *ctx)
dcc76bb1e1bb287e3e71e6a39a7ca207fab0eaa8Timo Sirainen if (fts_backend_build_more(ctx->build, ctx->uid, str_data(ctx->headers),
9d7451b57769988f7e3e41cd8790e65429ffc5c7Timo Sirainenstatic bool fts_build_update_save_part(struct fts_storage_build_context *ctx,
dcc76bb1e1bb287e3e71e6a39a7ca207fab0eaa8Timo Sirainen /* we'll index only text/xxx and message/rfc822 parts for now */
dcc76bb1e1bb287e3e71e6a39a7ca207fab0eaa8Timo Sirainenstatic int fts_build_mail_header(struct fts_storage_build_context *ctx,
6246b93fb37890dcb2f4df9896438f3f376ab284Timo Sirainen const struct message_header_line *hdr = block->hdr;
dcc76bb1e1bb287e3e71e6a39a7ca207fab0eaa8Timo Sirainen /* hdr->full_value is always set because we get the block from
dcc76bb1e1bb287e3e71e6a39a7ca207fab0eaa8Timo Sirainen message_decoder */
2a4e8f370c566ffd360922227fc73d0ee36abee7Timo Sirainen str_append_n(ctx->headers, hdr->middle, hdr->middle_len);
9d7451b57769988f7e3e41cd8790e65429ffc5c7Timo Sirainen str_append_n(ctx->headers, hdr->full_value, hdr->full_value_len);
9d7451b57769988f7e3e41cd8790e65429ffc5c7Timo Sirainen if (strcasecmp(hdr->name, "Content-Type") == 0) {
c8b29548f94160e0fe2f02e66d899d9e6cb495b3Timo Sirainenfts_build_mail(struct fts_storage_build_context *ctx, struct mail *mail)
dcc76bb1e1bb287e3e71e6a39a7ca207fab0eaa8Timo Sirainen parser = message_parser_init(pool_datastack_create(), input);
9d7451b57769988f7e3e41cd8790e65429ffc5c7Timo Sirainen ret = message_parser_parse_next_block(parser, &raw_block);
ret = 0;
&block))
if (ret < 0)
if (ret == 0)
if (ret < 0)
return ret;
int ret = 0;
return ret;
static struct mail_search_context *
return ctx;
if (fts_build_new(t) < 0)
return ctx;
return ctx;
&uid_result) < 0) {
&uid_result) < 0) {
return ctx;
unsigned int count;
int ret;
return ret;
static struct mail *
return _mail;
static struct mailbox_transaction_context *
struct mailbox_transaction_context *t;
int ret;
return ret;
const char *env;
if (!fts_storage_module_id_set) {