X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=recvattach.c;h=518cb590a4e876bf2f93dc95856659382b5e5db5;hp=90ed28bbb2f4ca179ec414c28a2973f146aa3bb8;hb=1c62190597f45fd606cf680df3f6a099b9f7ec18;hpb=9ce749c3b737258ad526d6afc2eb69b788a34cd4 diff --git a/recvattach.c b/recvattach.c index 90ed28b..518cb59 100644 --- a/recvattach.c +++ b/recvattach.c @@ -13,29 +13,18 @@ #include #include -#include +#include #include #include #include -#include #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]; @@ -139,19 +128,15 @@ ATTACHPTR **mutt_gen_attach_list (BODY * m, * %s = size * %u = unlink */ -const char *mutt_attach_fmt (char *dest, - ssize_t destlen, - char op, - const char *src, - const char *prefix, - const char *ifstring, - const char *elsestring, - unsigned long data, format_flag flags) +const char * +mutt_attach_fmt(char *dest, ssize_t destlen, char op, const char *src, + const char *prefix, const char *ifstr, const char *elstr, + anytype data, format_flag flags) { char fmt[16]; - char tmp[SHORT_STRING]; - char charset[SHORT_STRING]; - ATTACHPTR *aptr = (ATTACHPTR *) data; + char tmp[STRING]; + char charset[STRING]; + ATTACHPTR *aptr = data.ptr; int optional = (flags & M_FORMAT_OPTIONAL); ssize_t l; @@ -187,11 +172,10 @@ const char *mutt_attach_fmt (char *dest, } if (mutt_is_message_type(aptr->content) && MsgFmt && aptr->content->hdr) { - char s[SHORT_STRING]; + char s[STRING]; _mutt_make_string (s, sizeof (s), MsgFmt, NULL, aptr->content->hdr, - M_FORMAT_FORCESUBJ | M_FORMAT_MAKEPRINT | - M_FORMAT_ARROWCURSOR); + M_FORMAT_FORCESUBJ | M_FORMAT_MAKEPRINT); if (*s) { mutt_format_s (dest, destlen, prefix, s); break; @@ -312,19 +296,16 @@ const char *mutt_attach_fmt (char *dest, *dest = 0; } - if (optional) - mutt_FormatString (dest, destlen, ifstring, mutt_attach_fmt, data, 0); - else if (flags & M_FORMAT_OPTIONAL) - mutt_FormatString (dest, destlen, elsestring, mutt_attach_fmt, data, 0); - return (src); + if (flags & M_FORMAT_OPTIONAL) + m_strformat(dest, destlen, 0, optional ? ifstr : elstr, + mutt_attach_fmt, data, 0); + return src; } -static void attach_entry (char *b, ssize_t blen, MUTTMENU * menu, int num) +static void attach_entry(char *b, ssize_t blen, MUTTMENU * menu, int num) { - int w=(COLS-SW)>blen?blen:(COLS-SW); - mutt_FormatString (b, w, NONULL (AttachFormat), mutt_attach_fmt, - (unsigned long) (((ATTACHPTR **) menu->data)[num]), - M_FORMAT_ARROWCURSOR); + 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) @@ -339,7 +320,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; @@ -492,33 +473,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); + CLEARLINE(stdscr, LINES - 1); return; } - mutt_mktemp (tfile); - } else { - tfile[0] = '\0'; + 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); } } @@ -565,7 +545,7 @@ pipe_attachment_list (char *command, FILE * fp, int tag, BODY * top, void mutt_pipe_attachment_list (FILE * fp, int tag, BODY * top, int afilter) { STATE state; - char buf[SHORT_STRING]; + char buf[STRING]; pid_t thepid; if (fp) @@ -639,10 +619,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); @@ -808,7 +788,6 @@ void mutt_view_attachments (HEADER * hdr) int secured = 0; int need_secured = 0; - char helpstr[SHORT_STRING]; MUTTMENU *menu; BODY *cur = NULL; MESSAGE *msg; @@ -832,14 +811,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); @@ -884,8 +856,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); @@ -942,10 +912,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-> @@ -999,15 +965,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."); @@ -1092,32 +1049,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: @@ -1167,5 +1098,7 @@ void mutt_view_attachments (HEADER * hdr) op = OP_NULL; } +#undef CHECK_READONLY +#undef CHECK_ATTACH /* not reached */ }