mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-25 20:38:08 +01:00
notmuch-index-message: Don't index the line introducing a quote.
We identify it based on a trailing ':' on the line before a quote begins. At this point the database-dump diff between sup and notmuch is getting very, very small, (at least for our one test message).
This commit is contained in:
parent
048b8aec11
commit
9bf3cda34c
1 changed files with 31 additions and 2 deletions
|
@ -198,7 +198,7 @@ gen_terms_body (Xapian::TermGenerator term_gen,
|
||||||
GIOChannel *channel;
|
GIOChannel *channel;
|
||||||
GIOStatus gio_status;
|
GIOStatus gio_status;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
char *body_line = NULL;
|
char *p, *body_line = NULL, *prev_line = NULL;
|
||||||
|
|
||||||
channel = g_io_channel_new_file (filename, "r", &error);
|
channel = g_io_channel_new_file (filename, "r", &error);
|
||||||
if (channel == NULL) {
|
if (channel == NULL) {
|
||||||
|
@ -226,9 +226,38 @@ gen_terms_body (Xapian::TermGenerator term_gen,
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (body_line[0] == '>')
|
if (strlen (body_line) == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
/* If the line looks like it might be introducing a quote,
|
||||||
|
* save it until we see if the next line begins a quote. */
|
||||||
|
p = body_line + strlen (body_line) - 1;
|
||||||
|
while (p > body_line and isspace (*p))
|
||||||
|
p--;
|
||||||
|
if (*p == ':') {
|
||||||
|
prev_line = body_line;
|
||||||
|
body_line = NULL;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Skip quoted lines, (and previous lines that introduced them) */
|
||||||
|
if (body_line[0] == '>') {
|
||||||
|
if (prev_line) {
|
||||||
|
g_free (prev_line);
|
||||||
|
prev_line = NULL;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Now that we're not looking at a quote we can add the prev_line */
|
||||||
|
if (prev_line) {
|
||||||
|
gen_terms (term_gen, "body", prev_line);
|
||||||
|
g_free (prev_line);
|
||||||
|
prev_line = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Skip signatures */
|
||||||
|
/* XXX: Should only do this if "near" the end of the message. */
|
||||||
if (strncmp (body_line, "-- ", 3) == 0)
|
if (strncmp (body_line, "-- ", 3) == 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue