thread: Simplify code for assigning the subject.
authorCarl Worth <cworth@cworth.org>
Wed, 21 Apr 2010 22:06:02 +0000 (15:06 -0700)
committerCarl Worth <cworth@cworth.org>
Wed, 21 Apr 2010 22:06:02 +0000 (15:06 -0700)
We know that matched messages are always added in order, so we can
always just grab the subject from the first message. This is the same
approach that was used previously in _thread_add_message. That is, the
recent feature of renaming a thread based on the subject of the
"first" matched message is as simple as moving the subject assignment
from _thread_add_message to _thread_add_matched_message.

lib/thread.cc

index 5bf83540d6cf72a9abda4879a06f369f5399b78f..9b37143d33a4b14aabd62ed20c13183d506ba714 100644 (file)
@@ -112,12 +112,6 @@ _thread_add_message (notmuch_thread_t *thread,
        g_object_unref (G_OBJECT (list));
     }
 
-    if (! thread->subject) {
-       const char *subject;
-       subject = notmuch_message_get_header (message, "subject");
-       thread->subject = talloc_strdup (thread, subject);
-    }
-
     for (tags = notmuch_message_get_tags (message);
         notmuch_tags_valid (tags);
         notmuch_tags_move_to_next (tags))
@@ -143,26 +137,22 @@ _thread_add_matched_message (notmuch_thread_t *thread,
     if (date > thread->newest || ! thread->matched_messages)
        thread->newest = date;
 
-    const char *subject;
-    const char *cleaned_subject;
-
-    subject = notmuch_message_get_header (message, "subject");
-
-    if ((strncasecmp (subject, "Re: ", 4) == 0) ||
-       (strncasecmp (subject, "Aw: ", 4) == 0) ||
-       (strncasecmp (subject, "Vs: ", 4) == 0) ||
-       (strncasecmp (subject, "Sv: ", 4) == 0)) {
+    if (! thread->subject) {
+       const char *subject;
 
-       cleaned_subject = talloc_strndup (thread,
-                                         subject + 4,
-                                         strlen(subject) - 4);
-    } else {
-       cleaned_subject = talloc_strdup (thread, subject);
-    }
+       subject = notmuch_message_get_header (message, "subject");
 
-    if ((sort == NOTMUCH_SORT_OLDEST_FIRST && date <= thread->newest) ||
-       (sort != NOTMUCH_SORT_OLDEST_FIRST && date == thread->newest)) {
-       thread->subject = talloc_strdup (thread, cleaned_subject);
+       if ((strncasecmp (subject, "Re: ", 4) == 0) ||
+           (strncasecmp (subject, "Aw: ", 4) == 0) ||
+           (strncasecmp (subject, "Vs: ", 4) == 0) ||
+           (strncasecmp (subject, "Sv: ", 4) == 0))
+       {
+           thread->subject = talloc_strdup (thread, subject + 4);
+       }
+       else
+       {
+           thread->subject = talloc_strdup (thread, subject);
+       }
     }
 
     thread->matched_messages++;