fts-parser.c revision 772120713c176bde8c932b3fb4c413d223741fcd
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen/* Copyright (c) 2011 Dovecot authors, see the included COPYING file */
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen#include "lib.h"
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen#include "fts-parser.h"
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainenconst struct fts_parser *parsers[] = {
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen &fts_parser_html
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen};
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainenbool fts_parser_init(const char *content_type, const char *content_disposition,
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen struct fts_parser **parser_r)
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen{
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen unsigned int i;
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen for (i = 0; i < N_ELEMENTS(parsers); i++) {
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen *parser_r = parsers[i]->try_init(content_type,
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen content_disposition);
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen if (*parser_r != NULL)
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen return TRUE;
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen }
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen return FALSE;
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen}
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainenvoid fts_parser_more(struct fts_parser *parser, struct message_block *block)
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen{
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen parser->more(parser, block);
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen}
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainenvoid fts_parser_deinit(struct fts_parser **_parser)
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen{
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen struct fts_parser *parser = *_parser;
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen *_parser = NULL;
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen parser->deinit(parser);
772120713c176bde8c932b3fb4c413d223741fcdTimo Sirainen}