]> git.notmuchmail.org Git - notmuch/blobdiff - database.cc
notmuch: Ignore files that don't look like email messages.
[notmuch] / database.cc
index 2f3959fa5f6a3a28168c0738545df2b8ce97cacd..70f80f9fccf257ebf7d27cf7d1b154afc1e02f70 100644 (file)
@@ -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;
@@ -486,6 +487,15 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
 
     message = notmuch_message_open (filename);
 
+    notmuch_message_restrict_headers (message,
+                                     "date",
+                                     "from",
+                                     "in-reply-to",
+                                     "message-id",
+                                     "references",
+                                     "subject",
+                                     (char *) NULL);
+
     try {
        doc = Xapian::Document ();
 
@@ -560,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());