{ if (hdr->attach_del) { if (copy_delete_attach (hdr, hdr->content, fpin, fpout, flags & M_CM_UPDATE) == -1) return -1; } else { if (mutt_copy_bytes (fpin, fpout, body->length) == -1) return -1; } }
return mutt_copy_bytes (fpin, fpout, body->length);
_mutt_copy_message (FILE *fpout, FILE *fpin, HEADER *hdr, BODY *body,		    int flags, int chflags){  char prefix[SHORT_STRING];  STATE s;  if (flags & M_CM_PREFIX)    _mutt_make_string (prefix, sizeof (prefix), NONULL (Prefix), Context, hdr, 0);  if ((flags & M_CM_NOHEADER) == 0)  {    if (flags & M_CM_PREFIX)      chflags |= CH_PREFIX;   /* eventually update Content-Length/Lines: count in HEADER,    * for now we punt (don't copy them in mutt_copy_header() */     if (hdr->attach_del)     {       dprint (1, (debugfile, "changing flags\n"));       chflags |= CH_XMIT;       chflags &= ~CH_UPDATE_LEN;     }    if (mutt_copy_header (fpin, hdr, fpout, chflags,			  (chflags & CH_PREFIX) ? prefix : NULL) == -1)      return -1;  }  if (flags & M_CM_DECODE)  {    /* now make a text/plain version of the message */    memset (&s, 0, sizeof (STATE));    s.fpin = fpin;    s.fpout = fpout;    if (flags & M_CM_PREFIX)      s.prefix = prefix;    if (flags & M_CM_DISPLAY)      s.flags |= M_DISPLAY;#ifdef _PGPPATH    if (flags & M_CM_VERIFY)      s.flags |= M_VERIFY;#endif    mutt_body_handler (body, &s);  }#ifdef _PGPPATH  else if ((flags & M_CM_DECODE_PGP) && (hdr->pgp & PGPENCRYPT) &&      hdr->content->type == TYPEMULTIPART)  {    BODY *cur;    FILE *fp;    if (pgp_decrypt_mime (fpin, &fp, hdr->content, &cur))      return (-1);    fputs ("Mime-Version: 1.0\n", fpout);    mutt_write_mime_header (cur, fpout);    fputc ('\n', fpout);    fseek (fp, cur->offset, 0);    if (mutt_copy_bytes (fp, fpout, cur->length) == -1)    {      fclose (fp);      mutt_free_body (&cur);      return (-1);    }    mutt_free_body (&cur);    fclose (fp);  }#endif  else  {    fseek (fpin, body->offset, 0);    if (flags & M_CM_PREFIX)    {      int c;      size_t bytes = body->length;            fputs(prefix, fpout);            while((c = fgetc(fpin)) != EOF && bytes--)      {	fputc(c, fpout);	if(c == '\n')	{	  fputs(prefix, fpout);	}      }     }    else    {      if (hdr->attach_del)      {	if (copy_delete_attach (hdr, hdr->content, fpin, fpout,				flags & M_CM_UPDATE) == -1)	  return -1;      }      else       {	if (mutt_copy_bytes (fpin, fpout, body->length) == -1)	  return -1;      }    }  }  return 0;}