From d24bb53b7928bc4050f3d1ef6ee168359712ec49 Mon Sep 17 00:00:00 2001 From: David Champion Date: Sat, 14 Jan 2017 19:18:45 -0800 Subject: [PATCH] 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. --- mx.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mx.c b/mx.c index 3ebc1cece..fc877360f 100644 --- 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) -- 2.40.0