]> git.notmuchmail.org Git - notmuch/blobdiff - lib/index.cc
lib/database: index user headers.
[notmuch] / lib / index.cc
index 768309219c3ba4b433a70c7ef7c7b708c2dc0f97..f216ae5deb44becd81874bc5309cbb4ac4762e5b 100644 (file)
@@ -357,7 +357,7 @@ _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);
+       char *mime_string = g_mime_content_type_get_mime_type (content_type);
        if (mime_string) {
            _notmuch_message_gen_terms (message, "mimetype", mime_string);
            g_free (mime_string);
@@ -493,7 +493,7 @@ _index_mime_part (notmuch_message_t *message,
        }
     }
 
-    wrapper = g_mime_part_get_content_object (GMIME_PART (part));
+    wrapper = g_mime_part_get_content (GMIME_PART (part));
     if (wrapper)
        g_mime_data_wrapper_write_to_stream (wrapper, filter);
 
@@ -528,12 +528,11 @@ _index_encrypted_mime_part (notmuch_message_t *message,
 
     notmuch = notmuch_message_get_database (message);
 
-    GMimeCryptoContext* crypto_ctx = NULL;
     bool attempted = false;
     GMimeDecryptResult *decrypt_result = NULL;
     bool get_sk = (notmuch_indexopts_get_decrypt_policy (indexopts) == NOTMUCH_DECRYPT_TRUE);
     clear = _notmuch_crypto_decrypt (&attempted, notmuch_indexopts_get_decrypt_policy (indexopts),
-                                    message, crypto_ctx, encrypted_data, get_sk ? &decrypt_result : NULL, &err);
+                                    message, encrypted_data, get_sk ? &decrypt_result : NULL, &err);
     if (!attempted)
        return;
     if (err || !clear) {
@@ -573,6 +572,31 @@ _index_encrypted_mime_part (notmuch_message_t *message,
 
 }
 
+static notmuch_status_t
+_notmuch_message_index_user_headers (notmuch_message_t *message, GMimeMessage *mime_message)
+{
+
+    notmuch_database_t *notmuch = notmuch_message_get_database (message);
+    notmuch_string_map_iterator_t *iter = _notmuch_database_user_headers (notmuch);
+
+    for (; _notmuch_string_map_iterator_valid (iter);
+        _notmuch_string_map_iterator_move_to_next (iter)) {
+
+       const char *prefix_name = _notmuch_string_map_iterator_key (iter);
+
+       const char *header_name = _notmuch_string_map_iterator_value (iter);
+
+       const char *header = g_mime_object_get_header (GMIME_OBJECT (mime_message), header_name);
+       if (header)
+           _notmuch_message_gen_terms (message, prefix_name, header);
+    }
+
+    if (iter)
+       _notmuch_string_map_iterator_destroy (iter);
+    return NOTMUCH_STATUS_SUCCESS;
+
+}
+
 notmuch_status_t
 _notmuch_message_index_file (notmuch_message_t *message,
                             notmuch_indexopts_t *indexopts,
@@ -602,6 +626,8 @@ _notmuch_message_index_file (notmuch_message_t *message,
     subject = g_mime_message_get_subject (mime_message);
     _notmuch_message_gen_terms (message, "subject", subject);
 
+    status = _notmuch_message_index_user_headers (message, mime_message);
+
     _index_mime_part (message, indexopts, g_mime_message_get_mime_part (mime_message));
 
     return NOTMUCH_STATUS_SUCCESS;