X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=attach.c;h=d4b1c6fce50f8c541161f1a3d16323ec278538c8;hp=1d1ce6655d5c69bff037dcbd9650e27463da9055;hb=c0845f1be75f82fb29cc3a15d26b819041e39813;hpb=3766db5f849cea008b1cd3d532c712aeb17aa062 diff --git a/attach.c b/attach.c index 1d1ce66..d4b1c6f 100644 --- a/attach.c +++ b/attach.c @@ -56,10 +56,8 @@ int mutt_get_tmp_attachment (BODY * a) else mutt_perror(fpin ? tempfile : a->filename); - if (fpin) - fclose (fpin); - if (fpout) - fclose (fpout); + m_fclose(&fpin); + m_fclose(&fpout); return a->unlink ? 0 : -1; } @@ -147,8 +145,8 @@ int mutt_compose_attachment (BODY * a) goto bailout; } mutt_copy_stream (fp, tfp); - fclose (fp); - fclose (tfp); + m_fclose(&fp); + m_fclose(&tfp); mutt_unlink (a->filename); if (mutt_rename_file (tempfile, a->filename) != 0) { mutt_perror (_("Failure to rename file.")); @@ -375,6 +373,7 @@ int mutt_view_attachment (FILE * fp, BODY * a, int flag, HEADER * hdr, rfc1524_entry *entry = NULL; int rc = -1; int unlink_tempfile = 0; + int pagerfd = -1; is_message = mutt_is_message_type (a->type, a->subtype); if (is_message && a->hdr && (a->hdr->security & ENCRYPT) && @@ -446,26 +445,20 @@ int mutt_view_attachment (FILE * fp, BODY * a, int flag, HEADER * hdr, } if (use_pager) { - if (fp && !use_mailcap && a->filename) { - /* recv case */ - m_strcpy(pagerfile, sizeof(pagerfile), a->filename); - mutt_adv_mktemp (NULL, pagerfile, sizeof (pagerfile)); - } else { - mutt_mktemp (pagerfile); - } + /* recv case */ + pagerfd = m_tempfd(pagerfile, sizeof(pagerfile), NONULL(Tempdir), + fp && !use_mailcap ? a->filename : NULL); } if (use_mailcap) { pid_t thepid = 0; - int tempfd = -1, pagerfd = -1; + int tempfd = -1; if (!use_pager) mutt_endwin (NULL); if (use_pager || use_pipe) { - if (use_pager - && ((pagerfd = safe_open (pagerfile, O_CREAT | O_EXCL | O_WRONLY)) - == -1)) { + if (use_pager && pagerfd == -1) { mutt_perror ("open"); goto return_error; } @@ -742,13 +735,12 @@ int mutt_save_attachment (FILE * fp, BODY * m, char *path, int flags, fseeko ((s.fpin = fp), m->offset, 0); mutt_decode_attachment (m, &s); - if (fclose (s.fpout) != 0) { + if (m_fclose(&s.fpout) != 0) { mutt_perror ("fclose"); return (-1); } } - } - else { + } else { /* In send mode, just copy file */ FILE *ofp, *nfp; @@ -809,7 +801,7 @@ int mutt_decode_save_attachment (FILE * fp, BODY * m, char *path, if (stat (m->filename, &st) == -1) { mutt_perror ("stat"); - fclose (s.fpout); + m_fclose(&s.fpout); return (-1); } @@ -838,7 +830,7 @@ int mutt_decode_save_attachment (FILE * fp, BODY * m, char *path, mutt_body_handler (m, &s); - fclose (s.fpout); + m_fclose(&s.fpout); if (fp == NULL) { m->length = 0; m->encoding = saved_encoding; @@ -847,7 +839,7 @@ int mutt_decode_save_attachment (FILE * fp, BODY * m, char *path, m->parts = saved_parts; m->hdr = saved_hdr; } - fclose (s.fpin); + m_fclose(&s.fpin); } return (0); @@ -1010,7 +1002,7 @@ int mutt_attach_check (HEADER* hdr) { p++; } } - fclose (fp); + m_fclose(&fp); return (found); }