From 048b8aec111188385a806c7ebc2930e7b046f8cb Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Tue, 13 Oct 2009 16:09:54 -0700 Subject: [PATCH] notmuch-index-message: Don't index quoted lines and signatures. At this point, we're achieving a result that is *very* close to what sup does. The only difference is that we are still indexing the "excerpts from message ..." line, and we are not yet indexing references. --- notmuch-index-message.cc | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/notmuch-index-message.cc b/notmuch-index-message.cc index b7a0d3e7..dedbff37 100644 --- a/notmuch-index-message.cc +++ b/notmuch-index-message.cc @@ -198,7 +198,7 @@ gen_terms_body (Xapian::TermGenerator term_gen, GIOChannel *channel; GIOStatus gio_status; GError *error = NULL; - char *body_str; + char *body_line = NULL; channel = g_io_channel_new_file (filename, "r", &error); if (channel == NULL) { @@ -213,16 +213,31 @@ gen_terms_body (Xapian::TermGenerator term_gen, exit (1); } - gio_status = g_io_channel_read_to_end (channel, &body_str, - NULL, &error); - if (gio_status != G_IO_STATUS_NORMAL) { - fprintf (stderr, "Error: %s\n", error->message); - exit (1); + while (1) { + if (body_line) + g_free (body_line); + + gio_status = g_io_channel_read_line (channel, &body_line, + NULL, NULL, &error); + if (gio_status == G_IO_STATUS_EOF) + break; + if (gio_status != G_IO_STATUS_NORMAL) { + fprintf (stderr, "Error: %s\n", error->message); + exit (1); + } + + if (body_line[0] == '>') + continue; + + if (strncmp (body_line, "-- ", 3) == 0) + break; + + gen_terms (term_gen, "body", body_line); } - gen_terms (term_gen, "body", body_str); + if (body_line) + g_free (body_line); - g_free (body_str); g_io_channel_close (channel); }