mutt_enter_string is only used for _mutt_get_field for real.
[apps/madmutt.git] / recvattach.c
index 301b12e..f4ab2a3 100644 (file)
 #include <lib-mime/mime.h>
 #include <lib-sys/unix.h>
 
-#include <lib-ui/curses.h>
-#include <lib-ui/enter.h>
+#include <lib-ui/lib-ui.h>
 #include <lib-ui/menu.h>
 #include <lib-mx/mx.h>
-#include <lib-crypt/crypt.h>
 
 #include "mutt.h"
+#include "crypt.h"
 #include "handler.h"
 #include "recvattach.h"
 #include "attach.h"
 #include "copy.h"
 
-#define SW    (option(OPTMBOXPANE)?SidebarWidth:0)
-
-static struct mapping_t AttachHelp[] = {
-  {N_("Exit"), OP_EXIT},
-  {N_("Save"), OP_SAVE},
-  {N_("Pipe"), OP_PIPE},
-  {N_("Print"), OP_PRINT},
-  {N_("Help"), OP_HELP},
-  {NULL, OP_NULL}
-};
-
 void mutt_update_tree (ATTACHPTR ** idx, short idxlen)
 {
   char buf[STRING];
@@ -186,8 +174,7 @@ mutt_attach_fmt(char *dest, ssize_t destlen, char op, const char *src,
         char s[STRING];
 
         _mutt_make_string (s, sizeof (s), MsgFmt, NULL, aptr->content->hdr,
-                           M_FORMAT_FORCESUBJ | M_FORMAT_MAKEPRINT |
-                           (option(OPTARROWCURSOR) ? M_FORMAT_ARROWCURSOR : 0));
+                           M_FORMAT_FORCESUBJ | M_FORMAT_MAKEPRINT);
         if (*s) {
           mutt_format_s (dest, destlen, prefix, s);
           break;
@@ -316,9 +303,8 @@ mutt_attach_fmt(char *dest, ssize_t destlen, char op, const char *src,
 
 static void attach_entry(char *b, ssize_t blen, MUTTMENU * menu, int num)
 {
-    m_strformat(b, blen, COLS - SW, AttachFormat, mutt_attach_fmt,
-                ((ATTACHPTR **) menu->data)[num],
-                option(OPTARROWCURSOR) ? M_FORMAT_ARROWCURSOR : 0);
+    m_strformat(b, blen, getmaxx(main_w), AttachFormat, mutt_attach_fmt,
+                ((ATTACHPTR **) menu->data)[num], 0);
 }
 
 int mutt_tag_attach (MUTTMENU * menu, int n, int m)
@@ -333,7 +319,7 @@ int mutt_tag_attach (MUTTMENU * menu, int n, int m)
 static int mutt_query_save_attachment (FILE * fp, BODY * body, HEADER * hdr,
                                        char **directory)
 {
-  char *prompt;
+  const char *prompt;
   char buf[_POSIX_PATH_MAX], tfile[_POSIX_PATH_MAX];
   int is_message;
   int append = 0;
@@ -486,33 +472,30 @@ 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);
-    if (mutt_yesorno (warning, M_NO) != M_YES) {
-      CLEARLINE (LINES - 1);
-      return;
-    }
-    mutt_mktemp (tfile);
-  } else {
-    tfile[0] = '\0';
+    snprintf(warning, sizeof (warning),
+             _("WARNING!  You are about to overwrite %s, continue?"),
+             body->filename);
+    if (mutt_yesorno (warning, M_NO) != M_YES)
+      return
+    tempfd = m_tempfd(tfile, sizeof(tfile), NONULL(mod_core.tmpdir), 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);
   }
 }
@@ -633,10 +616,10 @@ static void print_attachment_list (FILE * fp, int tag, BODY * top,
 
           char newfile[_POSIX_PATH_MAX] = "";
           FILE *ifp;
+          int newfile_fd;
 
-          mutt_mktemp (newfile);
-          if (mutt_decode_save_attachment (fp, top, newfile, M_PRINTING, 0) ==
-              0) {
+          newfile_fd = m_tempfd(newfile, sizeof(newfile), NONULL(mod_core.tmpdir), NULL);
+          if (mutt_decode_save_attachment (fp, top, newfile_fd, M_PRINTING) == 0) {
             if ((ifp = fopen (newfile, "r")) != NULL) {
               mutt_copy_stream (ifp, state->fpout);
               m_fclose(&ifp);
@@ -802,7 +785,6 @@ void mutt_view_attachments (HEADER * hdr)
   int secured = 0;
   int need_secured = 0;
 
-  char helpstr[STRING];
   MUTTMENU *menu;
   BODY *cur = NULL;
   MESSAGE *msg;
@@ -826,14 +808,7 @@ void mutt_view_attachments (HEADER * hdr)
   {
     need_secured = 1;
 
-    if ((hdr->security & ENCRYPT) && !crypt_valid_passphrase (hdr->security)) {
-      mx_close_message (&msg);
-      return;
-    }
     if (hdr->security & APPLICATION_SMIME) {
-      if (hdr->env)
-        crypt_smime_getkeys (hdr->env);
-
       if (mutt_is_application_smime (hdr->content)) {
         secured = !crypt_smime_decrypt_mime (msg->fp, &fp,
                                              hdr->content, &cur);
@@ -878,8 +853,6 @@ void mutt_view_attachments (HEADER * hdr)
   menu->title = _("Attachments");
   menu->make_entry = attach_entry;
   menu->tag = mutt_tag_attach;
-  menu->help =
-    mutt_compile_help (helpstr, sizeof (helpstr), MENU_ATTACH, AttachHelp);
 
   mutt_attach_init (cur);
   attach_collapse (cur, 0, 1, 0);
@@ -936,10 +909,6 @@ void mutt_view_attachments (HEADER * hdr)
       mutt_update_attach_index (cur, &idx, &idxlen, &idxmax, menu);
       break;
 
-    case OP_FORGET_PASSPHRASE:
-      crypt_forget_passphrase ();
-      break;
-
     case OP_EXTRACT_KEYS:
       crypt_pgp_extract_keys_from_attachment_list (fp, menu->tagprefix,
                                                    menu->
@@ -993,15 +962,6 @@ void mutt_view_attachments (HEADER * hdr)
         break;
       }
 
-#ifdef USE_NNTP
-      if (Context->magic == M_NNTP) {
-        mutt_flushinp ();
-        mutt_error _("Can't delete attachment from newsserver.");
-
-        break;
-      }
-#endif
-
       if (hdr->security & (~PGP_TRADITIONAL_CHECKED)) {
         mutt_message
           _("Deletion of attachments from encrypted messages is unsupported.");
@@ -1086,32 +1046,6 @@ void mutt_view_attachments (HEADER * hdr)
       menu->redraw = REDRAW_FULL;
       break;
 
-#ifdef USE_NNTP
-    case OP_FORWARD_TO_GROUP:
-      CHECK_ATTACH;
-      mutt_attach_forward (fp, hdr, idx, idxlen,
-                           menu->tagprefix ? NULL : idx[menu->current]->
-                           content, SENDNEWS);
-      menu->redraw = REDRAW_FULL;
-      break;
-
-    case OP_FOLLOWUP:
-      CHECK_ATTACH;
-
-      if (!idx[menu->current]->content->hdr->env->followup_to ||
-          m_strcasecmp(idx[menu->current]->content->hdr->env->followup_to,
-                           "poster")
-          || query_quadoption (OPT_FOLLOWUPTOPOSTER,
-                               _("Reply by mail as poster prefers?")) !=
-          M_YES) {
-        mutt_attach_reply (fp, hdr, idx, idxlen,
-                           menu->tagprefix ? NULL : idx[menu->current]->
-                           content, SENDNEWS | SENDREPLY);
-        menu->redraw = REDRAW_FULL;
-        break;
-      }
-#endif
-
     case OP_REPLY:
     case OP_GROUP_REPLY:
     case OP_LIST_REPLY:
@@ -1161,5 +1095,7 @@ void mutt_view_attachments (HEADER * hdr)
 
     op = OP_NULL;
   }
+#undef CHECK_READONLY
+#undef CHECK_ATTACH
   /* not reached */
 }