-2005-07-25 04:37:20 Brendan Cully <brendan@kublai.com> (brendan)
+2005-07-25 15:48:36 Thomas Roessler <roessler@does-not-exist.org> (roessler)
- * imap/message.c: Minor cosmetic cleanup (fewer #ifdef HCACHE blocks)
+ * copy.c, imap/imap.c, mh.c, mutt.h, muttlib.c, thread.c: Get rid
+ of IMAP-related special casing all over the thread editing code.
-2005-07-25 04:31:51 Brendan Cully <brendan@kublai.com> (brendan)
+2005-07-25 04:56:38 Brendan Cully <brendan@kublai.com> (brendan)
- * muttlib.c: Suppress a printf format warning
+ * imap/message.c: Indentation, mostly
+
+ * imap/message.c: Minor cosmetic cleanup (fewer #ifdef HCACHE blocks)
-2005-07-24 18:33:31 Brendan Cully <brendan@kublai.com> (brendan)
+ * muttlib.c: Suppress a printf format warning
* muttlib.c: Typo in last commit.
-2005-07-24 18:28:36 Brendan Cully <brendan@kublai.com> (brendan)
-
* imap/message.c, muttlib.c, protos.h: Merge full envelope from
message fetch into original sparse envelope, instead of replacing
it. This should be gentler on the various threading hashes and may
2005-01-29 19:15:07 Thomas Glanzmann <sithglan@stud.uni-erlangen.de> (roessler)
* hcache.c: - make hcache.c conform to mutt codingstyle
- - use $Id: ChangeLog,v 3.444 2005/07/25 04:38:56 brendan Exp $ CVS keyword instead of %K% BitKeeper keyword
+ - use Id CVS keyword instead of %K% BitKeeper keyword
2005-01-29 19:15:07 Thomas Glanzmann <sithglan@stud.uni-erlangen.de> (roessler)
{
char buffer[SHORT_STRING];
- flags |= (h->irt_changed ? CH_UPDATE_IRT : 0)
- | (h->refs_changed ? CH_UPDATE_REFS : 0);
+ if (h->env)
+ flags |= (h->env->irt_changed ? CH_UPDATE_IRT : 0) |
+ (h->env->refs_changed ? CH_UPDATE_REFS : 0);
if (mutt_copy_hdr (in, out, h->offset, h->content->offset, flags, prefix) ==
-1)
if (flags & CH_UPDATE) {
if ((flags & CH_NOSTATUS) == 0) {
- if (h->irt_changed && h->new_env->in_reply_to) {
- LIST *listp = h->new_env->in_reply_to;
+ if (h->env->irt_changed && h->env->in_reply_to) {
+ LIST *listp = h->env->in_reply_to;
if (fputs ("In-Reply-To: ", out) == EOF)
return (-1);
return (-1);
}
- if (h->refs_changed && h->new_env->references) {
- LIST *listp = h->new_env->references, *refs = NULL, *t;
+ if (h->env->refs_changed && h->env->references) {
+ LIST *listp = h->env->references, *refs = NULL, *t;
if (fputs ("References: ", out) == EOF)
return (-1);
d = dump_list (e->in_reply_to, d, off);
d = dump_list (e->userhdrs, d, off);
+ d = dump_int (e->irt_changed, d, off);
+ d = dump_int (e->refs_changed, d, off);
+
return d;
}
static void restore_envelope (ENVELOPE * e, const unsigned char *d, int *off)
{
- int real_subj_off;
+ int tmp = 0;
restore_address (&e->return_path, d, off);
restore_address (&e->from, d, off);
restore_address (&e->mail_followup_to, d, off);
restore_char (&e->subject, d, off);
- restore_int ((unsigned int *) (&real_subj_off), d, off);
- if (0 <= real_subj_off) {
- e->real_subj = e->subject + real_subj_off;
+ restore_int ((unsigned int *) (&tmp), d, off);
+ if (0 <= tmp) {
+ e->real_subj = e->subject + tmp;
}
else {
e->real_subj = NULL;
restore_list (&e->references, d, off);
restore_list (&e->in_reply_to, d, off);
restore_list (&e->userhdrs, d, off);
+
+ restore_int ((unsigned int *) &tmp, d, off);
+ e->irt_changed = tmp;
+ restore_int ((unsigned int *) &tmp, d, off);
+ e->refs_changed = tmp;
}
static
/* if the message has been rethreaded or attachments have been deleted
* we delete the message and reupload it.
* This works better if we're expunging, of course. */
- if (ctx->hdrs[n]->refs_changed || ctx->hdrs[n]->irt_changed ||
+ if ((ctx->hdrs[n]->env && (ctx->hdrs[n]->env->refs_changed || ctx->hdrs[n]->env->irt_changed)) ||
ctx->hdrs[n]->attach_del) {
debug_print (3, ("Attachments to be deleted, falling back to _mutt_save_message\n"));
if (!appendctx)
{
HEADER *h = ctx->hdrs[msgno];
- if (h->attach_del || h->refs_changed || h->irt_changed)
+ if (h->attach_del ||
+ (h->env && (h->env->refs_changed || h->env->irt_changed)))
if (mh_rewrite_message (ctx, msgno) != 0)
return -1;
{
HEADER *h = ctx->hdrs[msgno];
- if (h->attach_del || h->refs_changed || h->irt_changed) {
+ if (h->attach_del ||
+ (h->env && (h->env->refs_changed || h->env->irt_changed))) {
/* when doing attachment deletion/rethreading, fall back to the MH case. */
if (mh_rewrite_message (ctx, msgno) != 0)
return (-1);
LIST *references; /* message references (in reverse order) */
LIST *in_reply_to; /* in-reply-to header content */
LIST *userhdrs; /* user defined headers */
+ unsigned int irt_changed:1; /* In-Reply-To changed to link/break threads */
+ unsigned int refs_changed:1; /* References changed to break thread */
} ENVELOPE;
typedef struct parameter {
unsigned int subject_changed:1; /* used for threading */
unsigned int threaded:1; /* used for threading */
unsigned int display_subject:1; /* used for threading */
- unsigned int irt_changed:1; /* In-Reply-To changed to link/break threads */
- unsigned int refs_changed:1; /* References changed to break thread */
unsigned int recip_valid:1; /* is_recipient is valid */
unsigned int active:1; /* message is not to be removed */
unsigned int trash:1; /* message is marked as trashed on disk.
char *tree; /* character string to print thread tree */
struct thread *thread;
- ENVELOPE *new_env; /* envelope information for rethreading */
-
#ifdef MIXMASTER
LIST *chain;
#endif
MOVE_ELEM(supersedes);
MOVE_ELEM(date);
MOVE_ELEM(x_label);
- MOVE_ELEM(references);
- MOVE_ELEM(in_reply_to);
+ if (!base->refs_changed) {
+ MOVE_ELEM(references);
+ }
+ if (!base->irt_changed) {
+ MOVE_ELEM(in_reply_to);
+ }
/* real_subj is subordinate to subject */
if (!base->subject) {
base->subject = (*extra)->subject;
/* 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;
}
}
}
{
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);
}
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;
}