From: Carl Worth Date: Tue, 13 Oct 2009 23:09:54 +0000 (-0700) Subject: notmuch-index-message: Don't index quoted lines and signatures. X-Git-Tag: 0.1~885 X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=commitdiff_plain;h=048b8aec111188385a806c7ebc2930e7b046f8cb;ds=sidebyside 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. --- 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); }