]> granicus.if.org Git - neomutt/commitdiff
Actually reopen mbox/mmdf files in case we find modifications. Closes #2725.
authorRocco Rutte <pdmef@gmx.net>
Wed, 13 May 2009 10:21:43 +0000 (12:21 +0200)
committerRocco Rutte <pdmef@gmx.net>
Wed, 13 May 2009 10:21:43 +0000 (12:21 +0200)
Since the file is changed while we have it open in ctx->fp, we likely
get wrong information when parsing the mailbox. Now we explicitely close
and (re)open it.

mbox.c

diff --git a/mbox.c b/mbox.c
index 844da877d915f01ba6e1400be753db8325bacc16..bab8ce9ee0a823a69df67e4a6c52dfb579079eb8 100644 (file)
--- a/mbox.c
+++ b/mbox.c
@@ -1109,17 +1109,13 @@ int mutt_reopen_mailbox (CONTEXT *ctx, int *index_hint)
   {
     case M_MBOX:
     case M_MMDF:
-      if (fseek (ctx->fp, 0, SEEK_SET) != 0)
-      {
-        dprint (1, (debugfile, "mutt_reopen_mailbox: fseek() failed\n"));
-        rc = -1;
-      } 
-      else 
-      {
-        cmp_headers = mbox_strict_cmp_headers;
-        rc = ((ctx->magic == M_MBOX) ? mbox_parse_mailbox
-                                    : mmdf_parse_mailbox) (ctx);
-      }
+      cmp_headers = mbox_strict_cmp_headers;
+      safe_fclose (&ctx->fp);
+      if (!(ctx->fp = safe_fopen (ctx->path, "r")))
+       rc = -1;
+      else
+       rc = ((ctx->magic == M_MBOX) ? mbox_parse_mailbox
+                                      : mmdf_parse_mailbox) (ctx);
       break;
 
     default: