]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fts: Added xml2text binary
authorTimo Sirainen <tss@iki.fi>
Thu, 4 Aug 2011 10:38:51 +0000 (13:38 +0300)
committerTimo Sirainen <tss@iki.fi>
Thu, 4 Aug 2011 10:38:51 +0000 (13:38 +0300)
.hgignore
src/plugins/fts/Makefile.am
src/plugins/fts/xml2text.c [new file with mode: 0644]

index 2c5f11202ebcf0ed78db906133db7b6b3dc16718..3b57522397820956fc3460b7e353a5b6c09e50f7 100644 (file)
--- a/.hgignore
+++ b/.hgignore
@@ -92,6 +92,7 @@ src/util/rawlog
 src/util/script
 src/util/script-login
 src/util/tcpwrap
+src/plugins/fts/xml2text
 src/plugins/quota/rquota_xdr.c
 src/plugins/quota/rquota.h
 
index 054478db0165290f70e03c0c1c4acb98fea49563..e1e7811f1893acb76385edf3592a9bdfaf1fae7b 100644 (file)
@@ -36,4 +36,11 @@ noinst_HEADERS = \
        fts-search-serialize.h \
        fts-storage.h
 
+pkglibexec_PROGRAMS = xml2text
+
+xml2text_SOURCES = xml2text.c
+
+xml2text_LDADD = fts-parser-html.lo $(LIBDOVECOT)
+xml2text_DEPENDENCIES = fts-parser-html.lo $(LIBDOVECOT_DEPS)
+
 EXTRA_DIST = decode2text.sh
diff --git a/src/plugins/fts/xml2text.c b/src/plugins/fts/xml2text.c
new file mode 100644 (file)
index 0000000..476bed4
--- /dev/null
@@ -0,0 +1,38 @@
+/* Copyright (c) 2011 Dovecot authors, see the included COPYING file */
+
+#include "lib.h"
+#include "message-parser.h"
+#include "fts-parser.h"
+
+#include <unistd.h>
+
+int main(void)
+{
+       struct fts_parser *parser;
+       unsigned char buf[IO_BLOCK_SIZE];
+       struct message_block block;
+       ssize_t ret;
+
+       lib_init();
+
+       parser = fts_parser_html.try_init(NULL, "text/html", NULL);
+       i_assert(parser != NULL);
+
+       memset(&block, 0, sizeof(block));
+       while ((ret = read(STDIN_FILENO, buf, sizeof(buf))) > 0) {
+               block.data = buf;
+               block.size = ret;
+               parser->v.more(parser, &block);
+               write(STDOUT_FILENO, block.data, block.size);
+       }
+
+       for (;;) {
+               block.size = 0;
+               parser->v.more(parser, &block);
+               if (block.size == 0)
+                       break;
+               write(STDOUT_FILENO, block.data, block.size);
+       }
+
+       lib_deinit();
+}