Rocco Rutte:
[apps/madmutt.git] / thread.c
index 0f93794..2aa421d 100644 (file)
--- a/thread.c
+++ b/thread.c
@@ -1259,7 +1259,7 @@ static void clean_references (THREAD * brk, THREAD * cur)
     if (done) {
       HEADER *h = cur->message;
 
-      /* clearing the References: header from obsolete Message-Id(s) */
+      /* clearing the References: header from obsolete Message-ID(s) */
       mutt_free_list (&ref->next);
 
       h->env->refs_changed = h->changed = 1;
@@ -1271,7 +1271,7 @@ void mutt_break_thread (HEADER * hdr)
 {
   mutt_free_list (&hdr->env->in_reply_to);
   mutt_free_list (&hdr->env->references);
-  hdr->env->irt_changed = hdr->env->refs_changed = 1;
+  hdr->env->irt_changed = hdr->env->refs_changed = hdr->changed = 1;
   clean_references (hdr->thread, hdr->thread->child);
 }
 
@@ -1305,3 +1305,24 @@ int mutt_link_threads (HEADER * cur, HEADER * last, CONTEXT * ctx)
 
   return changed;
 }
+
+void mutt_adjust_subject (ENVELOPE* e) {
+  regmatch_t pmatch[1];
+
+  if (e && e->subject) {
+    if (regexec (ReplyRegexp.rx, e->subject, 1, pmatch, 0) == 0)
+      e->real_subj = e->subject + pmatch[0].rm_eo;
+    else
+      e->real_subj = e->subject;
+  }
+}
+
+void mutt_adjust_all_subjects (void) {
+  int i = 0;
+
+  if (!Context || !Context->msgcount)
+    return;
+
+  for (i = 0; i < Context->msgcount; i++)
+    mutt_adjust_subject (Context->hdrs[i]->env);
+}