various code simplifications.
[apps/madmutt.git] / attach.c
index 1d1ce66..5d9b51f 100644 (file)
--- a/attach.c
+++ b/attach.c
@@ -45,7 +45,7 @@ int mutt_get_tmp_attachment (BODY * a)
   if (stat (a->filename, &st) == -1)
     return -1;
 
-  if ((fpin = fopen (a->filename, "r")) && (fpout = safe_fopen (tempfile, "w"))) {      /* __FOPEN_CHECKED__ */
+  if ((fpin = fopen (a->filename, "r")) && (fpout = safe_fopen (tempfile, "w"))) {
     mutt_copy_stream (fpin, fpout);
     m_strreplace(&a->filename, tempfile);
     a->unlink = 1;
@@ -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;
       }
@@ -673,7 +666,7 @@ static FILE *mutt_save_attachment_open (char *path, int flags)
    * as safe_fopen returns w/ an error if path exists
    */
   if (flags == M_SAVE_OVERWRITE)
-    return fopen (path, "w");   /* __FOPEN_CHECKED__ */
+    return fopen (path, "w");
 
   return safe_fopen (path, "w");
 }
@@ -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;
@@ -792,8 +784,6 @@ int mutt_decode_save_attachment (FILE * fp, BODY * m, char *path,
 
   if (flags == M_SAVE_APPEND)
     s.fpout = fopen (path, "a");
-  else if (flags == M_SAVE_OVERWRITE)
-    s.fpout = safe_fopen (path, "w");   /* __FOPEN_CHECKED__ */
   else
     s.fpout = safe_fopen (path, "w");
 
@@ -809,7 +799,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 +828,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 +837,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 +1000,7 @@ int mutt_attach_check (HEADER* hdr) {
       p++;
     }
   }
-  fclose (fp);
+  m_fclose(&fp);
 
   return (found);
 }