X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=mbox.c;h=1cd5a0c9a8083792dd45628cb621e9ab62340de8;hp=4f426a45bebc7282f6d63037bd8f7c889fb4036c;hb=afa60149c4d2bb71c8195091d3658b3bdc12d59d;hpb=42cc85de46ed8971a6c793835023cf26766fb096 diff --git a/mbox.c b/mbox.c index 4f426a4..1cd5a0c 100644 --- a/mbox.c +++ b/mbox.c @@ -417,116 +417,6 @@ static int mbox_open_mailbox (CONTEXT * ctx) return (rc); } -/* return 1 if address lists are strictly identical */ -static int strict_addrcmp (const ADDRESS * a, const ADDRESS * b) -{ - while (a && b) { - if (mutt_strcmp (a->mailbox, b->mailbox) || - mutt_strcmp (a->personal, b->personal)) - return (0); - - a = a->next; - b = b->next; - } - if (a || b) - return (0); - - return (1); -} - -static int strict_cmp_lists (const LIST * a, const LIST * b) -{ - while (a && b) { - if (mutt_strcmp (a->data, b->data)) - return (0); - - a = a->next; - b = b->next; - } - if (a || b) - return (0); - - return (1); -} - -static int strict_cmp_envelopes (const ENVELOPE * e1, const ENVELOPE * e2) -{ - if (e1 && e2) { - if (mutt_strcmp (e1->message_id, e2->message_id) || - mutt_strcmp (e1->subject, e2->subject) || - !strict_cmp_lists (e1->references, e2->references) || - !strict_addrcmp (e1->from, e2->from) || - !strict_addrcmp (e1->sender, e2->sender) || - !strict_addrcmp (e1->reply_to, e2->reply_to) || - !strict_addrcmp (e1->to, e2->to) || - !strict_addrcmp (e1->cc, e2->cc) || - !strict_addrcmp (e1->return_path, e2->return_path)) - return (0); - else - return (1); - } - else { - if (e1 == NULL && e2 == NULL) - return (1); - else - return (0); - } -} - -static int strict_cmp_parameters (const PARAMETER * p1, const PARAMETER * p2) -{ - while (p1 && p2) { - if (mutt_strcmp (p1->attribute, p2->attribute) || - mutt_strcmp (p1->value, p2->value)) - return (0); - - p1 = p1->next; - p2 = p2->next; - } - if (p1 || p2) - return (0); - - return (1); -} - -static int strict_cmp_bodies (const BODY * b1, const BODY * b2) -{ - if (b1->type != b2->type || - b1->encoding != b2->encoding || - mutt_strcmp (b1->subtype, b2->subtype) || - mutt_strcmp (b1->description, b2->description) || - !strict_cmp_parameters (b1->parameter, b2->parameter) || - b1->length != b2->length) - return (0); - return (1); -} - -/* return 1 if headers are strictly identical */ -int mbox_strict_cmp_headers (const HEADER * h1, const HEADER * h2) -{ - if (h1 && h2) { - if (h1->received != h2->received || - h1->date_sent != h2->date_sent || - h1->content->length != h2->content->length || - h1->lines != h2->lines || - h1->zhours != h2->zhours || - h1->zminutes != h2->zminutes || - h1->zoccident != h2->zoccident || - h1->mime != h2->mime || - !strict_cmp_envelopes (h1->env, h2->env) || - !strict_cmp_bodies (h1->content, h2->content)) - return (0); - else - return (1); - } - else { - if (h1 == NULL && h2 == NULL) - return (1); - else - return (0); - } -} - /* check to see if the mailbox has changed on disk. * * return values: @@ -674,6 +564,8 @@ static int _mbox_sync_mailbox (CONTEXT * ctx, int unused, int *index_hint) save_sort = Sort; Sort = SORT_ORDER; mutt_sort_headers (ctx, 0); + Sort = save_sort; + need_sort = 1; } /* need to open the file for writing in such a way that it does not truncate @@ -703,11 +595,9 @@ static int _mbox_sync_mailbox (CONTEXT * ctx, int unused, int *index_hint) rc = i; goto bail; } - else if (i < 0) { + else if (i < 0) /* fatal error */ - Sort = save_sort; return (-1); - } /* Create a temporary file to write the new version of the mailbox in. */ mutt_mktemp (tempfile); @@ -921,8 +811,6 @@ static int _mbox_sync_mailbox (CONTEXT * ctx, int unused, int *index_hint) mutt_unblock_signals (); mx_fastclose_mailbox (ctx); mutt_error _("Fatal error! Could not reopen mailbox!"); - - Sort = save_sort; return (-1); } @@ -939,7 +827,6 @@ static int _mbox_sync_mailbox (CONTEXT * ctx, int unused, int *index_hint) FREE (&oldOffset); unlink (tempfile); /* remove partial copy of the mailbox */ mutt_unblock_signals (); - Sort = save_sort; /* Restore the default value. */ return (0); /* signal success */ @@ -972,12 +859,10 @@ bail: /* Come here in case of disaster */ return (-1); } - if (need_sort || save_sort != Sort) { - Sort = save_sort; + if (need_sort) /* if the mailbox was reopened, the thread tree will be invalid so make * sure to start threading from scratch. */ mutt_sort_headers (ctx, (need_sort == M_REOPENED)); - } return rc; } @@ -1077,7 +962,7 @@ static int mbox_reopen_mailbox (CONTEXT * ctx, int *index_hint) rc = -1; } else { - cmp_headers = mbox_strict_cmp_headers; + cmp_headers = mutt_cmp_header; if (ctx->magic == M_MBOX) rc = mbox_parse_mailbox (ctx); else