X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=mbox.c;h=c18488d12998c57fd9d3a65d70841dbfd66c727d;hp=d3ecea59b190a277cc3fb2ba604bf1913d8fa7bb;hb=84336b1f31f4acefd0bf8500b8571c33669fd99f;hpb=a9d22903ab440da5d0b4d994d9de49ff2cf663d4 diff --git a/mbox.c b/mbox.c index d3ecea5..c18488d 100644 --- a/mbox.c +++ b/mbox.c @@ -18,6 +18,7 @@ #include "buffy.h" #include "mbox.h" #include "sort.h" +#include "thread.h" #include "copy.h" #ifdef USE_COMPRESSED @@ -126,7 +127,7 @@ static int mmdf_parse_mailbox (CONTEXT * ctx) if (fgets (buf, sizeof (buf) - 1, ctx->fp) == NULL) break; - if (mutt_strcmp (buf, MMDF_SEP) == 0) { + if (str_cmp (buf, MMDF_SEP) == 0) { loc = ftell (ctx->fp); count++; @@ -170,7 +171,7 @@ static int mmdf_parse_mailbox (CONTEXT * ctx) if (0 < tmploc && tmploc < ctx->size) { if (fseek (ctx->fp, tmploc, SEEK_SET) != 0 || fgets (buf, sizeof (buf) - 1, ctx->fp) == NULL || - mutt_strcmp (MMDF_SEP, buf) != 0) { + str_cmp (MMDF_SEP, buf) != 0) { if (fseek (ctx->fp, loc, SEEK_SET) != 0) debug_print (1, ("fseek() failed\n")); hdr->content->length = -1; @@ -189,7 +190,7 @@ static int mmdf_parse_mailbox (CONTEXT * ctx) if (fgets (buf, sizeof (buf) - 1, ctx->fp) == NULL) break; lines++; - } while (mutt_strcmp (buf, MMDF_SEP) != 0); + } while (str_cmp (buf, MMDF_SEP) != 0); hdr->lines = lines; hdr->content->length = loc - hdr->content->offset; @@ -310,7 +311,7 @@ static int mbox_parse_mailbox (CONTEXT * ctx) */ if (fseek (ctx->fp, tmploc, SEEK_SET) != 0 || fgets (buf, sizeof (buf), ctx->fp) == NULL || - safe_strncmp ("From ", buf, 5) != 0) { + str_ncmp ("From ", buf, 5) != 0) { debug_print (1, ("bad content-length in message %d (cl=%ld)\n", curhdr->index, curhdr->content->length)); debug_print (1, ("LINE: %s\n", buf)); @@ -467,8 +468,8 @@ static int _mbox_check_mailbox (CONTEXT * ctx, int *index_hint) if (fseek (ctx->fp, ctx->size, SEEK_SET) != 0) debug_print (1, ("fseek() failed\n")); if (fgets (buffer, sizeof (buffer), ctx->fp) != NULL) { - if ((ctx->magic == M_MBOX && safe_strncmp ("From ", buffer, 5) == 0) - || (ctx->magic == M_MMDF && mutt_strcmp (MMDF_SEP, buffer) == 0)) { + if ((ctx->magic == M_MBOX && str_ncmp ("From ", buffer, 5) == 0) + || (ctx->magic == M_MMDF && str_cmp (MMDF_SEP, buffer) == 0)) { if (fseek (ctx->fp, ctx->size, SEEK_SET) != 0) debug_print (1, ("fseek() failed\n")); if (ctx->magic == M_MBOX) @@ -564,6 +565,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 @@ -593,11 +596,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); @@ -643,8 +644,8 @@ static int _mbox_sync_mailbox (CONTEXT * ctx, int unused, int *index_hint) offset -= (sizeof MMDF_SEP - 1); /* allocate space for the new offsets */ - newOffset = safe_calloc (ctx->msgcount - first, sizeof (struct m_update_t)); - oldOffset = safe_calloc (ctx->msgcount - first, sizeof (struct m_update_t)); + newOffset = mem_calloc (ctx->msgcount - first, sizeof (struct m_update_t)); + oldOffset = mem_calloc (ctx->msgcount - first, sizeof (struct m_update_t)); for (i = first, j = 0; i < ctx->msgcount; i++) { /* @@ -749,8 +750,8 @@ static int _mbox_sync_mailbox (CONTEXT * ctx, int unused, int *index_hint) if (fseek (ctx->fp, offset, SEEK_SET) != 0 || /* seek the append location */ /* do a sanity check to make sure the mailbox looks ok */ fgets (buf, sizeof (buf), ctx->fp) == NULL || - (ctx->magic == M_MBOX && safe_strncmp ("From ", buf, 5) != 0) || - (ctx->magic == M_MMDF && mutt_strcmp (MMDF_SEP, buf) != 0)) { + (ctx->magic == M_MBOX && str_ncmp ("From ", buf, 5) != 0) || + (ctx->magic == M_MMDF && str_cmp (MMDF_SEP, buf) != 0)) { debug_print (1, ("message not in expected position.\n")); debug_print (1, ("LINE: %s\n", buf)); i = -1; @@ -811,8 +812,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); } @@ -825,11 +824,10 @@ static int _mbox_sync_mailbox (CONTEXT * ctx, int unused, int *index_hint) ctx->hdrs[i]->index = j++; } } - FREE (&newOffset); - FREE (&oldOffset); + mem_free (&newOffset); + mem_free (&oldOffset); unlink (tempfile); /* remove partial copy of the mailbox */ mutt_unblock_signals (); - Sort = save_sort; /* Restore the default value. */ return (0); /* signal success */ @@ -852,8 +850,8 @@ bail: /* Come here in case of disaster */ mbox_unlock_mailbox (ctx); mutt_unblock_signals (); - FREE (&newOffset); - FREE (&oldOffset); + mem_free (&newOffset); + mem_free (&oldOffset); if ((ctx->fp = freopen (ctx->path, "r", ctx->fp)) == NULL) { mutt_error _("Could not reopen mailbox!"); @@ -862,12 +860,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; } @@ -934,11 +930,11 @@ static int mbox_reopen_mailbox (CONTEXT * ctx, int *index_hint) if (ctx->subj_hash) hash_destroy (&ctx->subj_hash, NULL); mutt_clear_threads (ctx); - FREE (&ctx->v2r); + mem_free (&ctx->v2r); if (ctx->readonly) { for (i = 0; i < ctx->msgcount; i++) mutt_free_header (&(ctx->hdrs[i])); /* nothing to do! */ - FREE (&ctx->hdrs); + mem_free (&ctx->hdrs); } else { /* save the old headers */ @@ -984,7 +980,7 @@ static int mbox_reopen_mailbox (CONTEXT * ctx, int *index_hint) /* free the old headers */ for (j = 0; j < old_msgcount; j++) mutt_free_header (&(old_hdrs[j])); - FREE (&old_hdrs); + mem_free (&old_hdrs); ctx->quiet = 0; return (-1); @@ -1052,7 +1048,7 @@ static int mbox_reopen_mailbox (CONTEXT * ctx, int *index_hint) msg_mod = 1; } } - FREE (&old_hdrs); + mem_free (&old_hdrs); } ctx->quiet = 0; @@ -1096,9 +1092,9 @@ int mbox_is_magic (const char* path, struct stat* st) { struct utimbuf times; #endif fgets (tmp, sizeof (tmp), f); - if (safe_strncmp ("From ", tmp, 5) == 0) + if (str_ncmp ("From ", tmp, 5) == 0) magic = M_MBOX; - else if (mutt_strcmp (MMDF_SEP, tmp) == 0) + else if (str_cmp (MMDF_SEP, tmp) == 0) magic = M_MMDF; safe_fclose (&f); #ifndef BUFFY_SIZE @@ -1142,7 +1138,7 @@ static int mmdf_commit_message (MESSAGE* msg, CONTEXT* ctx) { } static mx_t* reg_mx (void) { - mx_t* fmt = safe_calloc (1, sizeof (mx_t)); + mx_t* fmt = mem_calloc (1, sizeof (mx_t)); fmt->local = 1; fmt->mx_check_empty = mbox_check_empty; fmt->mx_is_magic = mbox_is_magic;