changeset: 6903:945a3f4b15c7
user:      David Champion <d...@bikeshed.us>
date:      Sat Jan 14 19:18:45 2017 -0800
link:      http://dev.mutt.org/hg/mutt/rev/945a3f4b15c7

Allow initial blank lines in local mailboxes.

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.

diffs (18 lines):

diff -r 79306170e367 -r 945a3f4b15c7 mx.c
--- a/mx.c      Tue Jan 10 14:48:08 2017 -0800
+++ b/mx.c      Sat Jan 14 19:18:45 2017 -0800
@@ -423,6 +423,14 @@
   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)

Reply via email to