From: David Champion Date: Sun, 15 Jan 2017 03:18:45 +0000 (-0800) Subject: Allow initial blank lines in local mailboxes. X-Git-Tag: neomutt-20170225~33^2~17 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d24bb53b7928bc4050f3d1ef6ee168359712ec49;p=neomutt 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. --- 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)