X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=lib%2Findex.cc;h=0beaae62f048c37001e699351df030705e2341d9;hb=55c047ee0b0c9081ead76925ee1adaeb858264dd;hp=2b98b588d38d4532173a503cc652aa5e8d3c3de1;hpb=0260ee371ea561d3e6876ab800e934ddeacb3482;p=notmuch diff --git a/lib/index.cc b/lib/index.cc index 2b98b588..0beaae62 100644 --- a/lib/index.cc +++ b/lib/index.cc @@ -351,6 +351,19 @@ _index_address_list (notmuch_message_t *message, } } +static void +_index_content_type (notmuch_message_t *message, GMimeObject *part) +{ + GMimeContentType *content_type = g_mime_object_get_content_type (part); + if (content_type) { + char *mime_string = g_mime_content_type_to_string (content_type); + if (mime_string) { + _notmuch_message_gen_terms (message, "mimetype", mime_string); + g_free (mime_string); + } + } +} + /* Callback to generate terms for each mime part of a message. */ static void _index_mime_part (notmuch_message_t *message, @@ -361,6 +374,7 @@ _index_mime_part (notmuch_message_t *message, GMimeDataWrapper *wrapper; GByteArray *byte_array; GMimeContentDisposition *disposition; + GMimeContentType *content_type; char *body; const char *charset; @@ -370,15 +384,7 @@ _index_mime_part (notmuch_message_t *message, return; } - GMimeContentType *content_type = g_mime_object_get_content_type(part); - if (content_type) { - char *mime_string = g_mime_content_type_to_string(content_type); - if (mime_string) - { - _notmuch_message_gen_terms (message, "mimetype", mime_string); - g_free(mime_string); - } - } + _index_content_type (message, part); if (GMIME_IS_MULTIPART (part)) { GMimeMultipart *multipart = GMIME_MULTIPART (part); @@ -392,12 +398,15 @@ _index_mime_part (notmuch_message_t *message, for (i = 0; i < g_mime_multipart_get_count (multipart); i++) { if (GMIME_IS_MULTIPART_SIGNED (multipart)) { - /* Don't index the signature. */ - if (i == 1) + /* Don't index the signature, but index its content type. */ + if (i == GMIME_MULTIPART_SIGNED_SIGNATURE) { + _index_content_type (message, + g_mime_multipart_get_part (multipart, i)); continue; - if (i > 1) + } else if (i != GMIME_MULTIPART_SIGNED_CONTENT) { _notmuch_database_log (_notmuch_message_database (message), - "Warning: Unexpected extra parts of multipart/signed. Indexing anyway.\n"); + "Warning: Unexpected extra parts of multipart/signed. Indexing anyway.\n"); + } } if (GMIME_IS_MULTIPART_ENCRYPTED (multipart)) { /* Don't index encrypted parts. */ @@ -447,6 +456,8 @@ _index_mime_part (notmuch_message_t *message, g_mime_stream_mem_set_owner (GMIME_STREAM_MEM (stream), FALSE); filter = g_mime_stream_filter_new (stream); + + content_type = g_mime_object_get_content_type (part); discard_non_term_filter = notmuch_filter_discard_non_term_new (content_type); g_mime_stream_filter_add (GMIME_STREAM_FILTER (filter),