From 048b8aec111188385a806c7ebc2930e7b046f8cb Mon Sep 17 00:00:00 2001
From: Carl Worth <cworth@cworth.org>
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);
 }
 
-- 
2.45.2