Rocco Rutte:
[apps/madmutt.git] / copy.c
diff --git a/copy.c b/copy.c
index e4bb6c4..b168014 100644 (file)
--- a/copy.c
+++ b/copy.c
@@ -702,17 +702,16 @@ mutt_copy_message (FILE * fpout, CONTEXT * src, HEADER * hdr, int flags,
 
 int
 _mutt_append_message (CONTEXT * dest, FILE * fpin, CONTEXT * src,
-                      HEADER * hdr, BODY * body, int flags, int chflags)
-{
+                      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)
-    return -1;
+  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;
   chflags |= (dest->magic == M_MAILDIR ? CH_NOSTATUS : CH_UPDATE);