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.
GIOChannel *channel;
GIOStatus gio_status;
GError *error = NULL;
GIOChannel *channel;
GIOStatus gio_status;
GError *error = NULL;
+ char *body_line = NULL;
channel = g_io_channel_new_file (filename, "r", &error);
if (channel == NULL) {
channel = g_io_channel_new_file (filename, "r", &error);
if (channel == NULL) {
- 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_io_channel_close (channel);
}
g_io_channel_close (channel);
}