int mutt_copy_body (FILE *fp, BODY **tgt, BODY *src)
{
- char tmp[_POSIX_PATH_MAX];
+ BUFFER *tmp = NULL;
BODY *b;
-
PARAMETER *par, **ppar;
-
short use_disp;
+ tmp = mutt_buffer_pool_get ();
+
if (src->filename)
{
use_disp = 1;
- strfcpy (tmp, src->filename, sizeof (tmp));
+ mutt_buffer_strcpy (tmp, src->filename);
}
else
{
use_disp = 0;
- tmp[0] = '\0';
}
- mutt_adv_mktemp (tmp, sizeof (tmp));
- if (mutt_save_attachment (fp, src, tmp, 0, NULL) == -1)
+ mutt_buffer_adv_mktemp (tmp);
+ if (mutt_save_attachment (fp, src, mutt_b2s (tmp), 0, NULL) == -1)
+ {
+ mutt_buffer_pool_release (&tmp);
return -1;
+ }
*tgt = mutt_new_body ();
b = *tgt;
b->parts = NULL;
b->next = NULL;
- b->filename = safe_strdup (tmp);
+ b->filename = safe_strdup (mutt_b2s (tmp));
b->use_disp = use_disp;
b->unlink = 1;
mutt_stamp_attachment (b);
+ mutt_buffer_pool_release (&tmp);
return 0;
}
short resend)
{
MESSAGE *msg = NULL;
- char file[_POSIX_PATH_MAX];
+ BUFFER *file = NULL;
BODY *b;
FILE *bfp;
int rv = -1;
s.fpin = bfp;
+ file = mutt_buffer_pool_get ();
+
/* create temporary files for all attachments */
for (b = newhdr->content; b; b = b->next)
{
* mutt_get_tmp_attachment () from muttlib.c
*/
- file[0] = '\0';
+ mutt_buffer_clear (file);
if (b->filename)
{
- strfcpy (file, b->filename, sizeof (file));
+ mutt_buffer_strcpy (file, b->filename);
b->d_filename = safe_strdup (b->filename);
}
else
mutt_delete_parameter ("x-mutt-noconv", &b->parameter);
}
- mutt_adv_mktemp (file, sizeof(file));
- if ((s.fpout = safe_fopen (file, "w")) == NULL)
+ mutt_buffer_adv_mktemp (file);
+ if ((s.fpout = safe_fopen (mutt_b2s (file), "w")) == NULL)
goto bail;
if (safe_fclose (&s.fpout) != 0)
goto bail;
- mutt_str_replace (&b->filename, file);
+ mutt_str_replace (&b->filename, mutt_b2s (file));
b->unlink = 1;
mutt_stamp_attachment (b);
bail:
/* that's it. */
+ mutt_buffer_pool_release (&file);
if (bfp != fp) safe_fclose (&bfp);
if (msg) mx_close_message (ctx, &msg);