On Saturday, 23 July 2005 at 21:04, Brendan Cully wrote: > On Tuesday, 31 May 2005 at 21:34, TAKAHASHI Tamotsu wrote: > > * Wed May 11 2005 William Lovas <wlovas@xxxxxxxxxxxxxxxx> > > > I've encountered a bug in mutt versions 1.4i and 1.5.6i: if you load an > > > MMDF mailbox with no "From ..." lines and try to save the messages to an > > > mbox mailbox -- i.e. with mbox_type=mbox -- mutt will create invalid mbox > > > mailboxes by not inserting any "From ..." lines. > > > > As MMDF doesn't require "From " line, mutt should use M_ADD_FROM flag: > > > > +++ copy.c Tue May 31 21:24:55 2005 > > @@ -704,7 +704,7 @@ > > MESSAGE *msg; > > int r; > > > > - if ((msg = mx_open_new_message (dest, hdr, (src->magic == M_MBOX || > > src->magic == M_MMDF) ? 0 : M_ADD_FROM)) == NULL) > > + if ((msg = mx_open_new_message (dest, hdr, (src->magic == M_MBOX) ? 0 : > > M_ADD_FROM)) == NULL) > > return -1; > > if (dest->magic == M_MBOX || dest->magic == M_MMDF) > > chflags |= CH_FROM | CH_FORCE_FROM; > > Won't this produce two from lines in the case that the MMDF folder > DOES have a From line? In particular, I wonder whether copying > messages back and forth between an mbox and mmdf folder might produce > different messages. The attached patch should work better.
Index: copy.c =================================================================== RCS file: /home/roessler/cvs/mutt/copy.c,v retrieving revision 3.17 diff -u -p -r3.17 copy.c --- copy.c 3 Feb 2005 17:01:42 -0000 3.17 +++ copy.c 24 Jul 2005 07:54:21 -0000 @@ -701,10 +701,15 @@ int _mutt_append_message (CONTEXT *dest, FILE *fpin, CONTEXT *src, HEADER *hdr, BODY *body, int flags, int chflags) { + char buf[STRING]; MESSAGE *msg; int r; - if ((msg = mx_open_new_message (dest, hdr, (src->magic == M_MBOX || src->magic == M_MMDF) ? 0 : M_ADD_FROM)) == NULL) + fseek(fpin, hdr->offset, 0); + if (fgets (buf, sizeof (buf), fpin) == NULL) + return -1; + + if ((msg = mx_open_new_message (dest, hdr, is_from (buf, NULL, 0, NULL) ? 0 : M_ADD_FROM)) == NULL) return -1; if (dest->magic == M_MBOX || dest->magic == M_MMDF) chflags |= CH_FROM | CH_FORCE_FROM;
Attachment:
pgpvadyg0CROo.pgp
Description: PGP signature