]> granicus.if.org Git - neomutt/commitdiff
Allow initial blank lines in local mailboxes.
authorDavid Champion <dgc@bikeshed.us>
Sun, 15 Jan 2017 03:18:45 +0000 (19:18 -0800)
committerRichard Russon <rich@flatcap.org>
Fri, 10 Feb 2017 03:32:55 +0000 (03:32 +0000)
Some mailbox-creation tools erroneously append a blank line to a file
before appending a UNIXv7-format mail message, resulting in mailboxes
that are intended to be valid "mbox" folders but are not.  Notably old
versions of Mailman do this, making archive files that cannot be read by
mutt.

This patch causes mutt to skip leading NLs and CRs when detecting magic.

mx.c

diff --git a/mx.c b/mx.c
index 3ebc1ceceeb5c6e196d8248d3bcb16e22f30ede0..fc877360f6b4bd39cc8f52802704f6428dea7b5d 100644 (file)
--- a/mx.c
+++ b/mx.c
@@ -483,6 +483,14 @@ int mx_get_magic (const char *path)
   else if ((f = fopen (path, "r")) != NULL)
   {
     struct utimbuf times;
+    int ch = 0;
+
+    /* Some mailbox creation tools erroneously append a blank line to
+     * a file before appending a mail message.  This allows mutt to
+     * detect magic for and thus open those files. */
+    while ((ch = fgetc(f)) && (ch == '\n' || ch == '\r'));
+    if (!feof(f) && ch)
+      ungetc(ch, f);
 
     fgets (tmp, sizeof (tmp), f);
     if (mutt_strncmp ("From ", tmp, 5) == 0)