aboutsummaryrefslogtreecommitdiffhomepage
path: root/database.cc
diff options
context:
space:
mode:
authorGravatar Carl Worth <cworth@cworth.org>2009-10-19 23:08:49 -0700
committerGravatar Carl Worth <cworth@cworth.org>2009-10-19 23:16:05 -0700
commitad784f38ce30d39b058325baf050eb784fb9a02e (patch)
tree2403422f5d17070ce77ff4fdf920a799d5803432 /database.cc
parentb6dd413903370bd9b4f50428a32276f1f8457937 (diff)
notmuch: Ignore files that don't look like email messages.
This is helpful for things like indexes that other mail programs may have left around. It also means we can make the initial instructions much easier, (the user need not worry about moving away auxiliary files from some other email program).
Diffstat (limited to 'database.cc')
-rw-r--r--database.cc21
1 files changed, 18 insertions, 3 deletions
diff --git a/database.cc b/database.cc
index efc38762..70f80f9f 100644
--- a/database.cc
+++ b/database.cc
@@ -479,6 +479,7 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
GPtrArray *parents, *thread_ids;
const char *refs, *in_reply_to, *date, *header;
+ const char *from, *to, *subject;
char *message_id;
time_t time_value;
@@ -487,10 +488,12 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
message = notmuch_message_open (filename);
notmuch_message_restrict_headers (message,
- "references",
+ "date",
+ "from",
"in-reply-to",
"message-id",
- "date",
+ "references",
+ "subject",
(char *) NULL);
try {
@@ -567,7 +570,19 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
doc.add_value (NOTMUCH_VALUE_DATE,
Xapian::sortable_serialise (time_value));
- db->add_document (doc);
+ from = notmuch_message_get_header (message, "from");
+ subject = notmuch_message_get_header (message, "subject");
+ to = notmuch_message_get_header (message, "to");
+
+ if (from == NULL &&
+ subject == NULL &&
+ to == NULL)
+ {
+ notmuch_message_close (message);
+ return NOTMUCH_STATUS_FILE_NOT_EMAIL;
+ } else {
+ db->add_document (doc);
+ }
} catch (const Xapian::Error &error) {
fprintf (stderr, "A Xapian exception occurred: %s.\n",
error.get_msg().c_str());