X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=recvattach.c;h=fcad4919d7e6b0d30df6b0d94b9e691488305a77;hp=f7709158e7d1987fa6a86b9b3e23c3f6437dc1c7;hb=df7c0ef298343ef5523ad0be5af9fd629f901738;hpb=d6988dab6bd378ccdf0f17aaa16de8aee1ceaf43 diff --git a/recvattach.c b/recvattach.c index f770915..fcad491 100644 --- a/recvattach.c +++ b/recvattach.c @@ -12,24 +12,27 @@ # include "config.h" #endif +#include +#include +#include +#include +#include +#include + +#include + #include "mutt.h" -#include "ascii.h" #include "enter.h" #include "handler.h" #include "recvattach.h" #include "mutt_curses.h" #include "mutt_menu.h" #include "rfc1524.h" -#include "mime.h" #include "attach.h" -#include "mapping.h" #include "mx.h" #include "copy.h" #include "mutt_crypt.h" -#include "lib/mem.h" -#include "lib/intl.h" -#include "lib/str.h" #include #include @@ -49,18 +52,20 @@ static char LastSaveFolder[_POSIX_PATH_MAX] = ""; break; \ } +#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} + {NULL, OP_NULL} }; static int mutt_extract_path (char *filename, char *path) { - char *tmp = mem_malloc (sizeof (char) * _POSIX_PATH_MAX); + char *tmp = p_new(char, _POSIX_PATH_MAX); char *help_ptr; help_ptr = tmp; @@ -74,7 +79,7 @@ static int mutt_extract_path (char *filename, char *path) } *help_ptr++ = *filename++; } - mem_free (&tmp); + p_delete(&tmp); return 0; } @@ -99,11 +104,11 @@ void mutt_update_tree (ATTACHPTR ** idx, short idxlen) } if (idx[x]->tree) { - if (str_cmp (idx[x]->tree, buf) != 0) - str_replace (&idx[x]->tree, buf); + if (m_strcmp(idx[x]->tree, buf) != 0) + m_strreplace(&idx[x]->tree, buf); } else - idx[x]->tree = str_dup (buf); + idx[x]->tree = m_strdup(buf); if (2 * (idx[x]->level + 2) < sizeof (buf) && idx[x]->level) { s = buf + 2 * (idx[x]->level - 1); @@ -124,7 +129,7 @@ ATTACHPTR **mutt_gen_attach_list (BODY * m, for (; m; m = m->next) { if (*idxlen == *idxmax) { - mem_realloc (&idx, sizeof (ATTACHPTR *) * ((*idxmax) += 5)); + p_realloc(&idx, (*idxmax) += 5); for (i = *idxlen; i < *idxmax; i++) idx[i] = NULL; } @@ -133,8 +138,7 @@ ATTACHPTR **mutt_gen_attach_list (BODY * m, && (compose || (parent_type == -1 && ascii_strcasecmp ("alternative", m->subtype))) - && (!(WithCrypto & APPLICATION_PGP) - || !mutt_is_multipart_encrypted (m)) + && (!mutt_is_multipart_encrypted (m)) ) { idx = mutt_gen_attach_list (m->parts, m->type, idx, idxlen, idxmax, level, @@ -142,7 +146,7 @@ ATTACHPTR **mutt_gen_attach_list (BODY * m, } else { if (!idx[*idxlen]) - idx[*idxlen] = (ATTACHPTR *) mem_calloc (1, sizeof (ATTACHPTR)); + idx[*idxlen] = p_new(ATTACHPTR, 1); new = idx[(*idxlen)++]; new->content = m; @@ -151,14 +155,12 @@ ATTACHPTR **mutt_gen_attach_list (BODY * m, new->level = level; /* We don't support multipart messages in the compose menu yet */ - if (!compose && !m->collapsed && - ((m->type == TYPEMULTIPART && (!(WithCrypto & APPLICATION_PGP) - || !mutt_is_multipart_encrypted (m)) - ) - || mutt_is_message_type (m->type, m->subtype))) { - idx = - mutt_gen_attach_list (m->parts, m->type, idx, idxlen, idxmax, - level + 1, compose); + if (!compose && !m->collapsed + && ((m->type == TYPEMULTIPART && !mutt_is_multipart_encrypted(m)) + || mutt_is_message_type (m->type, m->subtype))) + { + idx = mutt_gen_attach_list (m->parts, m->type, idx, idxlen, idxmax, + level + 1, compose); } } } @@ -258,7 +260,7 @@ const char *mutt_attach_fmt (char *dest, if (aptr->content->filename && *aptr->content->filename == '/') { char path[_POSIX_PATH_MAX]; - strfcpy (path, aptr->content->filename, sizeof (path)); + m_strcpy(path, sizeof(path), aptr->content->filename); mutt_pretty_mailbox (path); mutt_format_s (dest, destlen, prefix, path); } @@ -367,7 +369,8 @@ const char *mutt_attach_fmt (char *dest, static void attach_entry (char *b, size_t blen, MUTTMENU * menu, int num) { - mutt_FormatString (b, blen, NONULL (AttachFormat), mutt_attach_fmt, + 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); } @@ -404,10 +407,10 @@ static int mutt_query_save_attachment (FILE * fp, BODY * body, HEADER * hdr, if (body->filename) { if (directory && *directory) - mutt_concat_path (buf, *directory, mutt_basename (body->filename), - sizeof (buf)); + mutt_concat_path(buf, sizeof(buf), *directory, + mutt_basename(body->filename)); else - strfcpy (buf, body->filename, sizeof (buf)); + m_strcpy(buf, sizeof(buf), body->filename); } else if (body->hdr && body->encoding != ENCBASE64 && @@ -429,7 +432,7 @@ static int mutt_query_save_attachment (FILE * fp, BODY * body, HEADER * hdr, char tmpbuf[_POSIX_PATH_MAX]; snprintf (tmpbuf, sizeof (tmpbuf), "%s%s", LastSaveFolder, buf); - strfcpy (buf, tmpbuf, sizeof (buf)); + m_strcpy(buf, sizeof(buf), tmpbuf); ret = mutt_get_field (_("Save to file: ") , buf, sizeof (buf), M_FILE); if ((ret != 0) || (!buf[0])) @@ -437,7 +440,7 @@ static int mutt_query_save_attachment (FILE * fp, BODY * body, HEADER * hdr, } else { mutt_extract_path (buf, path); - strfcpy (LastSaveFolder, path, sizeof (LastSaveFolder)); + m_strcpy(LastSaveFolder, sizeof(LastSaveFolder), path); } prompt = NULL; @@ -459,7 +462,7 @@ static int mutt_query_save_attachment (FILE * fp, BODY * body, HEADER * hdr, } else if (rc == -1) return -1; - strfcpy (tfile, buf, sizeof (tfile)); + m_strcpy(tfile, sizeof(tfile), buf); } else { if ((rc = @@ -506,7 +509,7 @@ void mutt_save_attachment_list (FILE * fp, int tag, BODY * top, HEADER * hdr, if (!buf[0]) { int append = 0; - strfcpy (buf, NONULL (top->filename), sizeof (buf)); + m_strcpy(buf, sizeof(buf), NONULL(top->filename)); if (mutt_get_field (_("Save to file: "), buf, sizeof (buf), M_FILE | M_CLEAR) != 0 || !buf[0]) return; @@ -547,7 +550,7 @@ void mutt_save_attachment_list (FILE * fp, int tag, BODY * top, HEADER * hdr, break; } - mem_free (&directory); + p_delete(&directory); if (tag && menu) { menu->oldcurrent = menu->current; @@ -643,7 +646,7 @@ void mutt_pipe_attachment_list (FILE * fp, int tag, BODY * top, int filter) filter = 0; /* sanity check: we can't filter in the recv case yet */ buf[0] = 0; - memset (&state, 0, sizeof (STATE)); + p_clear(&state, 1); if (mutt_get_field ((filter ? _("Filter through: ") : _("Pipe to: ")), buf, sizeof (buf), M_CMD) != 0 || !buf[0]) @@ -747,7 +750,7 @@ void mutt_print_attachment_list (FILE * fp, int tag, BODY * top) if (!can_print (top, tag)) return; mutt_endwin (NULL); - memset (&state, 0, sizeof (STATE)); + p_clear(&state, 1); thepid = mutt_create_filter (NONULL (PrintCmd), &state.fpout, NULL, NULL); print_attachment_list (fp, tag, top, &state); fclose (state.fpout); @@ -835,8 +838,7 @@ mutt_attach_display_loop (MUTTMENU * menu, int op, FILE * fp, HEADER * hdr, break; /* functions which are passed through from the pager */ case OP_CHECK_TRADITIONAL: - if (!(WithCrypto & APPLICATION_PGP) - || (hdr && hdr->security & PGP_TRADITIONAL_CHECKED)) { + if (hdr && hdr->security & PGP_TRADITIONAL_CHECKED) { op = OP_NULL; break; } @@ -924,17 +926,16 @@ void mutt_view_attachments (HEADER * hdr) return; - if (WithCrypto && ((hdr->security & ENCRYPT) || - (mutt_is_application_smime (hdr->content) & - SMIMEOPAQUE))) { + if ((hdr->security & ENCRYPT) || + (mutt_is_application_smime (hdr->content) & SMIMEOPAQUE)) + { need_secured = 1; if ((hdr->security & ENCRYPT) && !crypt_valid_passphrase (hdr->security)) { mx_close_message (&msg); return; } - if ((WithCrypto & APPLICATION_SMIME) - && (hdr->security & APPLICATION_SMIME)) { + if (hdr->security & APPLICATION_SMIME) { if (hdr->env) crypt_smime_getkeys (hdr->env); @@ -958,7 +959,7 @@ void mutt_view_attachments (HEADER * hdr) else need_secured = 0; } - if ((WithCrypto & APPLICATION_PGP) && (hdr->security & APPLICATION_PGP)) { + if (hdr->security & APPLICATION_PGP) { if (mutt_is_multipart_encrypted (hdr->content)) secured = !crypt_pgp_decrypt_mime (msg->fp, &fp, hdr->content, &cur); else @@ -973,7 +974,7 @@ void mutt_view_attachments (HEADER * hdr) } } - if (!WithCrypto || !need_secured) { + if (!need_secured) { fp = msg->fp; cur = hdr->content; } @@ -990,7 +991,7 @@ void mutt_view_attachments (HEADER * hdr) attach_collapse (cur, 0, 1, 0); mutt_update_attach_index (cur, &idx, &idxlen, &idxmax, menu); - FOREVER { + for (;;) { if (op == OP_NULL) op = mutt_menuLoop (menu); switch (op) { @@ -1032,21 +1033,19 @@ void mutt_view_attachments (HEADER * hdr) break; case OP_EXTRACT_KEYS: - if ((WithCrypto & APPLICATION_PGP)) { - crypt_pgp_extract_keys_from_attachment_list (fp, menu->tagprefix, - menu-> - tagprefix ? cur : - idx[menu->current]-> - content); - menu->redraw = REDRAW_FULL; - } + crypt_pgp_extract_keys_from_attachment_list (fp, menu->tagprefix, + menu-> + tagprefix ? cur : + idx[menu->current]-> + content); + menu->redraw = REDRAW_FULL; break; case OP_CHECK_TRADITIONAL: - if ((WithCrypto & APPLICATION_PGP) - && crypt_pgp_check_traditional (fp, menu->tagprefix ? cur + if (crypt_pgp_check_traditional (fp, menu->tagprefix ? cur : idx[menu->current]->content, - menu->tagprefix)) { + menu->tagprefix)) + { hdr->security = crypt_query (cur); menu->redraw = REDRAW_FULL; } @@ -1097,10 +1096,9 @@ void mutt_view_attachments (HEADER * hdr) } #endif - if (WithCrypto && (hdr->security & (~PGP_TRADITIONAL_CHECKED))) { + if (hdr->security & (~PGP_TRADITIONAL_CHECKED)) { mutt_message - _ - ("Deletion of attachments from encrypted messages is unsupported."); + _("Deletion of attachments from encrypted messages is unsupported."); } else { if (!menu->tagprefix) { @@ -1195,7 +1193,7 @@ void mutt_view_attachments (HEADER * hdr) CHECK_ATTACH; if (!idx[menu->current]->content->hdr->env->followup_to || - str_casecmp (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?")) != @@ -1238,15 +1236,15 @@ void mutt_view_attachments (HEADER * hdr) hdr->attach_del = 1; if (idx[idxmax]->content) idx[idxmax]->content->aptr = NULL; - mem_free (&idx[idxmax]->tree); - mem_free (&idx[idxmax]); + p_delete(&idx[idxmax]->tree); + p_delete(&idx[idxmax]); } if (hdr->attach_del) hdr->changed = 1; - mem_free (&idx); + p_delete(&idx); idxmax = 0; - if (WithCrypto && need_secured && secured) { + if (need_secured && secured) { fclose (fp); mutt_free_body (&cur); }