#include <string.h>
#include <errno.h>
#include <time.h>
+#include <sys/time.h>
#include <iostream>
{
const char *s = subject;
+ if (subject == NULL)
+ return NULL;
+
while (*s) {
while (*s && isspace (*s))
s++;
return;
}
- if (! GMIME_IS_PART (part)) {
+ if (GMIME_IS_MESSAGE_PART (part)) {
+ GMimeMessage *message;
+
+ message = g_mime_message_part_get_message (GMIME_MESSAGE_PART (part));
+
+ gen_terms_part (term_gen, g_mime_message_get_mime_part (message));
+
+ return;
+ }
+
+ if (! (GMIME_IS_PART (part))) {
fprintf (stderr, "Warning: Not indexing unknown mime part: %s.\n",
g_type_name (G_OBJECT_TYPE (part)));
return;
GIOChannel *channel;
GIOStatus gio_status;
GError *error = NULL;
+ int count;
+ struct timeval tv_start, tv_now;
if (argc < 2) {
usage (argv[0]);
channel = g_io_channel_unix_new (fileno (stdin));
+ count = 0;
+
+ gettimeofday (&tv_start, NULL);
+
while (1) {
gio_status = g_io_channel_read_line (channel, &filename,
NULL, NULL, &error);
index_file (db, term_gen, filename);
g_free (filename);
+
+ count++;
+ if (count % 1000 == 0) {
+ gettimeofday (&tv_now, NULL);
+ printf ("Indexed %d messages (%g messages/second)\n",
+ count, count / ((tv_now.tv_sec - tv_start.tv_sec) +
+ (tv_now.tv_usec - tv_start.tv_usec) / 1e6));
+ }
}
} catch (const Xapian::Error &error) {