X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=thread.c;h=d07f32855b62d6933bdb7317c8ccce9bbd83acca;hp=9da0e5ba70d028972040783f55c8fe294a9ccd5e;hb=afa60149c4d2bb71c8195091d3658b3bdc12d59d;hpb=df70e07e24add1869bcc9b7af2277d9d0c09a281 diff --git a/thread.c b/thread.c index 9da0e5b..d07f328 100644 --- a/thread.c +++ b/thread.c @@ -1,19 +1,10 @@ /* + * Copyright notice from original mutt: * Copyright (C) 1996-2002 Michael R. Elkins * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + * This file is part of mutt-ng, see http://www.muttng.org/. + * It's licensed under the GNU General Public License, + * please see the file GPL in the top level source directory. */ #if HAVE_CONFIG_H @@ -23,6 +14,9 @@ #include "mutt.h" #include "sort.h" +#include "lib/mem.h" +#include "lib/intl.h" + #include #include @@ -849,7 +843,7 @@ void mutt_sort_threads (CONTEXT * ctx, int init) if (new->duplicate_thread) new = new->parent; if (is_descendant (new, thread)) /* no loops! */ - break; + continue; } if (thread->parent) @@ -1256,7 +1250,7 @@ static void clean_references (THREAD * brk, THREAD * cur) for (p = brk; !done && p; p = p->parent) for (ref = cur->message->env->references; p->message && ref; ref = ref->next) - if (!mutt_strcasecmp (ref->data, p->message->env->message_id)) { + if (!safe_strcasecmp (ref->data, p->message->env->message_id)) { done = 1; break; } @@ -1267,14 +1261,7 @@ static void clean_references (THREAD * brk, THREAD * cur) /* clearing the References: header from obsolete Message-Id(s) */ mutt_free_list (&ref->next); - if (h->new_env) - mutt_free_list (&h->new_env->references); - else - h->new_env = mutt_new_envelope (); - - h->new_env->references = mutt_copy_list (h->env->references); - - h->refs_changed = h->changed = 1; + h->env->refs_changed = h->changed = 1; } } } @@ -1283,15 +1270,7 @@ void mutt_break_thread (HEADER * hdr) { mutt_free_list (&hdr->env->in_reply_to); mutt_free_list (&hdr->env->references); - hdr->irt_changed = hdr->refs_changed = hdr->changed = 1; - - if (hdr->new_env) { - mutt_free_list (&hdr->new_env->in_reply_to); - mutt_free_list (&hdr->new_env->references); - } - else - hdr->new_env = mutt_new_envelope (); - + hdr->env->irt_changed = hdr->env->refs_changed = 1; clean_references (hdr->thread, hdr->thread->child); } @@ -1305,12 +1284,9 @@ static int link_threads (HEADER * parent, HEADER * child, CONTEXT * ctx) child->env->in_reply_to = mutt_new_list (); child->env->in_reply_to->data = safe_strdup (parent->env->message_id); - child->new_env->in_reply_to = mutt_new_list (); - child->new_env->in_reply_to->data = safe_strdup (parent->env->message_id); - mutt_set_flag (ctx, child, M_TAG, 0); - child->irt_changed = child->changed = 1; + child->env->irt_changed = child->changed = 1; return 1; }