+/* create a send-mode duplicate from a receive-mode body */
+static int mutt_copy_body (FILE * fp, BODY ** tgt, BODY * src)
+{
+ char tmp[_POSIX_PATH_MAX];
+ BODY *b;
+
+ parameter_t *par, **ppar;
+
+ short use_disp;
+
+ if (src->filename) {
+ use_disp = 1;
+ m_strcpy(tmp, sizeof(tmp), src->filename);
+ } else {
+ use_disp = 0;
+ tmp[0] = '\0';
+ }
+
+ mutt_adv_mktemp (NULL, tmp, sizeof (tmp));
+ if (mutt_save_attachment (fp, src, tmp, 0, NULL) == -1)
+ return -1;
+
+ *tgt = body_new();
+ b = *tgt;
+
+ memcpy (b, src, sizeof (BODY));
+ b->parts = NULL;
+ b->next = NULL;
+
+ b->filename = m_strdup(tmp);
+ b->use_disp = use_disp;
+ b->unlink = 1;
+
+ if (mutt_is_text_part (b))
+ b->noconv = 1;
+
+ b->xtype = m_strdup(b->xtype);
+ b->subtype = m_strdup(b->subtype);
+ b->form_name = m_strdup(b->form_name);
+ b->filename = m_strdup(b->filename);
+ b->d_filename = m_strdup(b->d_filename);
+ b->description = m_strdup(b->description);
+
+ /*
+ * we don't seem to need the HEADER structure currently.
+ * XXX - this may change in the future
+ */
+
+ if (b->hdr)
+ b->hdr = NULL;
+
+ /* copy parameters */
+ for (par = b->parameter, ppar = &b->parameter; par;
+ ppar = &(*ppar)->next, par = par->next) {
+ *ppar = parameter_new();
+ (*ppar)->attribute = m_strdup(par->attribute);
+ (*ppar)->value = m_strdup(par->value);
+ }
+
+ mutt_stamp_attachment (b);
+
+ return 0;
+}
+