aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/index.cc
diff options
context:
space:
mode:
authorGravatar Carl Worth <cworth@cworth.org>2010-01-05 19:14:07 -0800
committerGravatar Carl Worth <cworth@cworth.org>2010-01-06 10:32:06 -0800
commit6ef6ddba80116e6c1cbaca494f42a63d924b741b (patch)
tree0982e97df672de82cfba9184df62f21e26a63265 /lib/index.cc
parent3fa2385f7cc367725ea74a08237158bd5a4163d7 (diff)
Index content from citations and signatures.
In the presentation we often omit citations and signatures, but this is not content that should be omitted from the index, (especially when the citation detection is wrong---see cases where a line beginning with "From" is corrupted to ">From" by mail processing tools).
Diffstat (limited to 'lib/index.cc')
-rw-r--r--lib/index.cc60
1 files changed, 4 insertions, 56 deletions
diff --git a/lib/index.cc b/lib/index.cc
index e58bc870..7e2da085 100644
--- a/lib/index.cc
+++ b/lib/index.cc
@@ -123,60 +123,6 @@ skip_re_in_subject (const char *subject)
return s;
}
-/* Given a string representing the body of a message, generate terms
- * for it, (skipping quoted portions and signatures).
- *
- * This function is evil in that it modifies the string passed to it,
- * (changing some newlines into '\0').
- */
-static void
-_index_body_text (notmuch_message_t *message, char *body)
-{
- char *line, *line_end, *next_line;
-
- if (body == NULL)
- return;
-
- next_line = body;
-
- while (1) {
- line = next_line;
- if (*line == '\0')
- break;
-
- next_line = strchr (line, '\n');
- if (next_line == NULL) {
- next_line = line + strlen (line);
- }
- line_end = next_line - 1;
-
- /* Get to the next non-blank line. */
- while (*next_line == '\n')
- next_line++;
-
- /* Skip blank lines. */
- if (line_end < line)
- continue;
-
- /* Skip lines that are quotes. */
- if (*line == '>')
- continue;
-
- /* Also skip lines introducing a quote on the next line. */
- if (*line_end == ':' && *next_line == '>')
- continue;
-
- /* Finally, bail as soon as we see a signature. */
- /* XXX: Should only do this if "near" the end of the message. */
- if (strncmp (line, "-- ", 3) == 0)
- break;
-
- *(line_end + 1) = '\0';
-
- _notmuch_message_gen_terms (message, NULL, line);
- }
-}
-
/* Callback to generate terms for each mime part of a message. */
static void
_index_mime_part (notmuch_message_t *message,
@@ -249,9 +195,11 @@ _index_mime_part (notmuch_message_t *message,
g_byte_array_append (byte_array, (guint8 *) "\0", 1);
body = (char *) g_byte_array_free (byte_array, FALSE);
- _index_body_text (message, body);
+ if (body) {
+ _notmuch_message_gen_terms (message, NULL, body);
- free (body);
+ free (body);
+ }
}
notmuch_status_t