X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=attach.c;h=4e6fff13a979dd352b4e00a4b2ca4fb752f6b097;hp=a66665c788307ac144ab07bef88c8cea31c515a8;hb=6ebff74ad242d4c56fb7762965b19cee14fd2daa;hpb=230399f9632c37b66c1c117a17e8327eae6b3235 diff --git a/attach.c b/attach.c index a66665c..4e6fff1 100644 --- a/attach.c +++ b/attach.c @@ -8,27 +8,13 @@ * please see the file GPL in the top level source directory. */ -#if HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - #include #include - #include - #include #include +#include #include "mutt.h" #include "handler.h" @@ -36,7 +22,6 @@ #include "keymap.h" #include "pager.h" #include "copy.h" -#include "mx.h" #include int mutt_get_tmp_attachment (BODY * a) @@ -71,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; } @@ -126,7 +109,6 @@ int mutt_compose_attachment (BODY * a) if (r != -1 && entry->composetypecommand) { BODY *b; FILE *fp, *tfp; - char tempfile[_POSIX_PATH_MAX]; if ((fp = safe_fopen (a->filename, "r")) == NULL) { mutt_perror (_("Failure to open file to parse headers.")); @@ -136,6 +118,8 @@ int mutt_compose_attachment (BODY * a) b = mutt_read_mime_header (fp, 0); if (b) { + char tempfile[_POSIX_PATH_MAX]; + if (b->parameter) { parameter_list_wipe(&a->parameter); a->parameter = b->parameter; @@ -155,15 +139,14 @@ int mutt_compose_attachment (BODY * a) /* Remove headers by copying out data to another file, then * copying the file back */ fseeko (fp, b->offset, 0); - mutt_mktemp (tempfile); - if ((tfp = safe_fopen (tempfile, "w")) == NULL) { + tfp = m_tempfile(tempfile, sizeof(tempfile), NONULL(Tempdir), NULL); + if (!tfp) { mutt_perror (_("Failure to open file to strip headers.")); - 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.")); @@ -465,9 +448,9 @@ int mutt_view_attachment (FILE * fp, BODY * a, int flag, HEADER * hdr, /* recv case */ m_strcpy(pagerfile, sizeof(pagerfile), a->filename); mutt_adv_mktemp (NULL, pagerfile, sizeof (pagerfile)); - } - else + } else { mutt_mktemp (pagerfile); + } } if (use_mailcap) { @@ -629,7 +612,7 @@ int mutt_pipe_attachment (FILE * fp, BODY * b, const char *path, s.fpin = fp; mutt_decode_attachment (b, &s); - safe_fclose (&s.fpout); + m_fclose(&s.fpout); } else { /* send case */ @@ -653,13 +636,13 @@ int mutt_pipe_attachment (FILE * fp, BODY * b, const char *path, if (thepid < 0) { mutt_perror (_("Can't create filter")); - safe_fclose (&ifp); + m_fclose(&ifp); goto bail; } mutt_copy_stream (ifp, ofp); - safe_fclose (&ofp); - safe_fclose (&ifp); + m_fclose(&ofp); + m_fclose(&ifp); } rv = 1; @@ -757,13 +740,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; @@ -775,19 +757,19 @@ int mutt_save_attachment (FILE * fp, BODY * m, char *path, int flags, if ((nfp = mutt_save_attachment_open (path, flags)) == NULL) { mutt_perror ("fopen"); - safe_fclose (&ofp); + m_fclose(&ofp); return (-1); } if (mutt_copy_stream (ofp, nfp) == -1) { mutt_error _("Write fault!"); - safe_fclose (&ofp); - safe_fclose (&nfp); + m_fclose(&ofp); + m_fclose(&nfp); return (-1); } - safe_fclose (&ofp); - safe_fclose (&nfp); + m_fclose(&ofp); + m_fclose(&nfp); } return 0; @@ -824,7 +806,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); } @@ -853,7 +835,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; @@ -862,7 +844,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); @@ -930,12 +912,12 @@ int mutt_print_attachment (FILE * fp, BODY * a) mutt_perror (_("Can't create filter")); rfc1524_entry_delete(&entry); - safe_fclose (&ifp); + m_fclose(&ifp); return 0; } mutt_copy_stream (ifp, fpout); - safe_fclose (&fpout); - safe_fclose (&ifp); + m_fclose(&fpout); + m_fclose(&ifp); if (mutt_wait_filter (thepid) || option (OPTWAITKEY)) mutt_any_key_to_continue (NULL); } @@ -983,16 +965,16 @@ int mutt_print_attachment (FILE * fp, BODY * a) mutt_copy_stream (ifp, fpout); - safe_fclose (&fpout); - safe_fclose (&ifp); + m_fclose(&fpout); + m_fclose(&ifp); if (mutt_wait_filter (thepid) != 0 || option (OPTWAITKEY)) mutt_any_key_to_continue (NULL); rc = 1; } bail0: - safe_fclose (&ifp); - safe_fclose (&fpout); + m_fclose(&ifp); + m_fclose(&fpout); mutt_unlink (newfile); return rc; } @@ -1025,7 +1007,7 @@ int mutt_attach_check (HEADER* hdr) { p++; } } - fclose (fp); + m_fclose(&fp); return (found); }