fixes bad semantics (an invalid fd is -1 not 0).
[apps/madmutt.git] / recvattach.c
index 6c7956a..b9db799 100644 (file)
@@ -486,33 +486,32 @@ void mutt_save_attachment_list (FILE * fp, int tag, BODY * top, HEADER * hdr,
 }
 
 static void
-mutt_query_pipe_attachment (char *command, FILE * fp, BODY * body, int afilter)
+mutt_query_pipe_attachment(char *command, FILE * fp, BODY * body, int afilter)
 {
   char tfile[_POSIX_PATH_MAX];
   char warning[STRING + _POSIX_PATH_MAX];
+  int tempfd = -1;
 
   if (afilter) {
-    snprintf (warning, sizeof (warning),
-              _("WARNING!  You are about to overwrite %s, continue?"),
-              body->filename);
+    snprintf(warning, sizeof (warning),
+             _("WARNING!  You are about to overwrite %s, continue?"),
+             body->filename);
     if (mutt_yesorno (warning, M_NO) != M_YES) {
       CLEARLINE (LINES - 1);
       return;
     }
-    mutt_mktemp (tfile);
-  } else {
-    tfile[0] = '\0';
+    tempfd = m_tempfd(tfile, sizeof(tfile), NONULL(Tempdir), NULL);
   }
 
-  if (mutt_pipe_attachment (fp, body, command, tfile)) {
+  if (mutt_pipe_attachment(fp, body, command, tempfd)) {
     if (afilter) {
       mutt_unlink (body->filename);
       mutt_rename_file (tfile, body->filename);
       mutt_update_encoding (body);
       mutt_message _("Attachment filtered.");
     }
-  } else {
-    if (afilter && tfile[0])
+  } else if (afilter) {
+      close(tempfd);
       mutt_unlink (tfile);
   }
 }