X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=notmuch-index-message.cc;h=dedbff37dec206269e09684f64edcdd12a33ae4e;hp=b7a0d3e7bb37a8c440819def7d40f4ee4ceec8d2;hb=048b8aec111188385a806c7ebc2930e7b046f8cb;hpb=9dbb1facfb1af5f16b3311a75593693ec04fa6a6 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); }