]> git.notmuchmail.org Git - notmuch/blobdiff - lib/index.cc
build: build parse-time-string as part of the notmuch lib and static cli
[notmuch] / lib / index.cc
index 00478f8db53f054d7917705f9b18c073c8bfa098..e377732220effdcb537934bf6036d01528829db3 100644 (file)
@@ -304,26 +304,6 @@ _index_address_list (notmuch_message_t *message,
     }
 }
 
-static const char *
-skip_re_in_subject (const char *subject)
-{
-    const char *s = subject;
-
-    if (subject == NULL)
-       return NULL;
-
-    while (*s) {
-       while (*s && isspace (*s))
-           s++;
-       if (strncasecmp (s, "re:", 3) == 0)
-           s += 3;
-       else
-           break;
-    }
-
-    return s;
-}
-
 /* Callback to generate terms for each mime part of a message. */
 static void
 _index_mime_part (notmuch_message_t *message,
@@ -335,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");
@@ -345,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. */
@@ -353,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));
        }
@@ -400,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);
@@ -459,7 +464,6 @@ _notmuch_message_index_file (notmuch_message_t *message,
     _index_address_list (message, "to", addresses);
 
     subject = g_mime_message_get_subject (mime_message);
-    subject = skip_re_in_subject (subject);
     _notmuch_message_gen_terms (message, "subject", subject);
 
     _index_mime_part (message, g_mime_message_get_mime_part (mime_message));