]> git.notmuchmail.org Git - notmuch/blobdiff - lib/index.cc
lib: Expose query debug output via an environment variable
[notmuch] / lib / index.cc
index bdfb8ed5c363aea8a2c44e3a8d9ce902185118ab..e377732220effdcb537934bf6036d01528829db3 100644 (file)
@@ -315,6 +315,7 @@ _index_mime_part (notmuch_message_t *message,
     GByteArray *byte_array;
     GMimeContentDisposition *disposition;
     char *body;
+    const char *charset;
 
     if (! part) {
        fprintf (stderr, "Warning: Not indexing empty mime part.\n");
@@ -325,6 +326,12 @@ _index_mime_part (notmuch_message_t *message,
        GMimeMultipart *multipart = GMIME_MULTIPART (part);
        int i;
 
+       if (GMIME_IS_MULTIPART_SIGNED (multipart))
+         _notmuch_message_add_term (message, "tag", "signed");
+
+       if (GMIME_IS_MULTIPART_ENCRYPTED (multipart))
+         _notmuch_message_add_term (message, "tag", "encrypted");
+
        for (i = 0; i < g_mime_multipart_get_count (multipart); i++) {
            if (GMIME_IS_MULTIPART_SIGNED (multipart)) {
                /* Don't index the signature. */
@@ -333,6 +340,10 @@ _index_mime_part (notmuch_message_t *message,
                if (i > 1)
                    fprintf (stderr, "Warning: Unexpected extra parts of multipart/signed. Indexing anyway.\n");
            }
+           if (GMIME_IS_MULTIPART_ENCRYPTED (multipart)) {
+               /* Don't index encrypted parts. */
+               continue;
+           }
            _index_mime_part (message,
                              g_mime_multipart_get_part (multipart, i));
        }
@@ -380,6 +391,20 @@ _index_mime_part (notmuch_message_t *message,
     g_mime_stream_filter_add (GMIME_STREAM_FILTER (filter),
                              discard_uuencode_filter);
 
+    charset = g_mime_object_get_content_type_parameter (part, "charset");
+    if (charset) {
+       GMimeFilter *charset_filter;
+       charset_filter = g_mime_filter_charset_new (charset, "UTF-8");
+       /* This result can be NULL for things like "unknown-8bit".
+        * Don't set a NULL filter as that makes GMime print
+        * annoying assertion-failure messages on stderr. */
+       if (charset_filter) {
+           g_mime_stream_filter_add (GMIME_STREAM_FILTER (filter),
+                                     charset_filter);
+           g_object_unref (charset_filter);
+       }
+    }
+
     wrapper = g_mime_part_get_content_object (GMIME_PART (part));
     if (wrapper)
        g_mime_data_wrapper_write_to_stream (wrapper, filter);