X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=recvattach.c;h=74a59fa2ced442d82a37e1e78ecbe85980db1b60;hp=fcad4919d7e6b0d30df6b0d94b9e691488305a77;hb=916e4872caf252a5850e64f79427b9dd7808435d;hpb=10b7d54ecaa5c54622bf1239b57fa2e3359db0e1 diff --git a/recvattach.c b/recvattach.c index fcad491..74a59fa 100644 --- a/recvattach.c +++ b/recvattach.c @@ -8,39 +8,24 @@ * please see the file GPL in the top level source directory. */ -#if HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include -#include -#include -#include +#include #include +#include +#include +#include +#include + +#include + #include "mutt.h" -#include "enter.h" #include "handler.h" #include "recvattach.h" -#include "mutt_curses.h" -#include "mutt_menu.h" -#include "rfc1524.h" #include "attach.h" -#include "mx.h" #include "copy.h" -#include "mutt_crypt.h" - +#include -#include -#include -#include -#include -#include -#include -#include static const char *Mailbox_is_read_only = N_("Mailbox is read-only."); static char LastSaveFolder[_POSIX_PATH_MAX] = ""; @@ -91,7 +76,7 @@ void mutt_update_tree (ATTACHPTR ** idx, short idxlen) for (x = 0; x < idxlen; x++) { idx[x]->num = x; - if (2 * (idx[x]->level + 2) < sizeof (buf)) { + if (2 * (idx[x]->level + 2) < ssizeof (buf)) { if (idx[x]->level) { s = buf + 2 * (idx[x]->level - 1); *s++ = (idx[x]->content->next) ? M_TREE_LTEE : M_TREE_LLCORNER; @@ -110,7 +95,7 @@ void mutt_update_tree (ATTACHPTR ** idx, short idxlen) else idx[x]->tree = m_strdup(buf); - if (2 * (idx[x]->level + 2) < sizeof (buf) && idx[x]->level) { + if (2 * (idx[x]->level + 2) < ssizeof (buf) && idx[x]->level) { s = buf + 2 * (idx[x]->level - 1); *s++ = (idx[x]->content->next) ? '\005' : '\006'; *s++ = '\006'; @@ -187,7 +172,7 @@ ATTACHPTR **mutt_gen_attach_list (BODY * m, * %u = unlink */ const char *mutt_attach_fmt (char *dest, - size_t destlen, + ssize_t destlen, char op, const char *src, const char *prefix, @@ -200,7 +185,7 @@ const char *mutt_attach_fmt (char *dest, char charset[SHORT_STRING]; ATTACHPTR *aptr = (ATTACHPTR *) data; int optional = (flags & M_FORMAT_OPTIONAL); - size_t l; + ssize_t l; switch (op) { case 'C': @@ -367,7 +352,7 @@ const char *mutt_attach_fmt (char *dest, return (src); } -static void attach_entry (char *b, size_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, @@ -520,14 +505,14 @@ void mutt_save_attachment_list (FILE * fp, int tag, BODY * top, HEADER * hdr, rc = mutt_save_attachment (fp, top, tfile, append, hdr); if (rc == 0 && AttachSep && (fpout = fopen (tfile, "a")) != NULL) { fprintf (fpout, "%s", AttachSep); - fclose (fpout); + m_fclose(&fpout); } } else { rc = mutt_save_attachment (fp, top, tfile, M_SAVE_APPEND, hdr); if (rc == 0 && AttachSep && (fpout = fopen (tfile, "a")) != NULL) { fprintf (fpout, "%s", AttachSep); - fclose (fpout); + m_fclose(&fpout); } } } @@ -564,12 +549,12 @@ 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 filter) +mutt_query_pipe_attachment (char *command, FILE * fp, BODY * body, int afilter) { char tfile[_POSIX_PATH_MAX]; char warning[STRING + _POSIX_PATH_MAX]; - if (filter) { + if (afilter) { snprintf (warning, sizeof (warning), _("WARNING! You are about to overwrite %s, continue?"), body->filename); @@ -583,7 +568,7 @@ mutt_query_pipe_attachment (char *command, FILE * fp, BODY * body, int filter) tfile[0] = 0; if (mutt_pipe_attachment (fp, body, command, tfile)) { - if (filter) { + if (afilter) { mutt_unlink (body->filename); mutt_rename_file (tfile, body->filename); mutt_update_encoding (body); @@ -591,7 +576,7 @@ mutt_query_pipe_attachment (char *command, FILE * fp, BODY * body, int filter) } } else { - if (filter && tfile[0]) + if (afilter && tfile[0]) mutt_unlink (tfile); } } @@ -612,7 +597,7 @@ static void pipe_attachment (FILE * fp, BODY * b, STATE * state) return; } mutt_copy_stream (ifp, state->fpout); - fclose (ifp); + m_fclose(&ifp); if (AttachSep) state_puts (AttachSep, state); } @@ -620,50 +605,50 @@ static void pipe_attachment (FILE * fp, BODY * b, STATE * state) static void pipe_attachment_list (char *command, FILE * fp, int tag, BODY * top, - int filter, STATE * state) + int afilter, STATE * state) { for (; top; top = top->next) { if (!tag || top->tagged) { - if (!filter && !option (OPTATTACHSPLIT)) + if (!afilter && !option (OPTATTACHSPLIT)) pipe_attachment (fp, top, state); else - mutt_query_pipe_attachment (command, fp, top, filter); + mutt_query_pipe_attachment (command, fp, top, afilter); } else if (top->parts) - pipe_attachment_list (command, fp, tag, top->parts, filter, state); + pipe_attachment_list (command, fp, tag, top->parts, afilter, state); if (!tag) break; } } -void mutt_pipe_attachment_list (FILE * fp, int tag, BODY * top, int filter) +void mutt_pipe_attachment_list (FILE * fp, int tag, BODY * top, int afilter) { STATE state; char buf[SHORT_STRING]; pid_t thepid; if (fp) - filter = 0; /* sanity check: we can't filter in the recv case yet */ + afilter = 0; /* sanity check: we can't filter in the recv case yet */ buf[0] = 0; p_clear(&state, 1); - if (mutt_get_field ((filter ? _("Filter through: ") : _("Pipe to: ")), + if (mutt_get_field ((afilter ? _("Filter through: ") : _("Pipe to: ")), buf, sizeof (buf), M_CMD) != 0 || !buf[0]) return; mutt_expand_path (buf, sizeof (buf)); - if (!filter && !option (OPTATTACHSPLIT)) { + if (!afilter && !option (OPTATTACHSPLIT)) { mutt_endwin (NULL); thepid = mutt_create_filter (buf, &state.fpout, NULL, NULL); - pipe_attachment_list (buf, fp, tag, top, filter, &state); - fclose (state.fpout); + pipe_attachment_list (buf, fp, tag, top, afilter, &state); + m_fclose(&state.fpout); if (mutt_wait_filter (thepid) != 0 || option (OPTWAITKEY)) mutt_any_key_to_continue (NULL); } else - pipe_attachment_list (buf, fp, tag, top, filter, &state); + pipe_attachment_list (buf, fp, tag, top, afilter, &state); } static int can_print (BODY * top, int tag) @@ -716,7 +701,7 @@ static void print_attachment_list (FILE * fp, int tag, BODY * top, 0) { if ((ifp = fopen (newfile, "r")) != NULL) { mutt_copy_stream (ifp, state->fpout); - fclose (ifp); + m_fclose(&ifp); if (AttachSep) state_puts (AttachSep, state); } @@ -753,7 +738,7 @@ void mutt_print_attachment_list (FILE * fp, int tag, BODY * top) p_clear(&state, 1); thepid = mutt_create_filter (NONULL (PrintCmd), &state.fpout, NULL, NULL); print_attachment_list (fp, tag, top, &state); - fclose (state.fpout); + m_fclose(&state.fpout); if (mutt_wait_filter (thepid) != 0 || option (OPTWAITKEY)) mutt_any_key_to_continue (NULL); } @@ -952,8 +937,8 @@ void mutt_view_attachments (HEADER * hdr) cur = NULL; secured = !crypt_smime_decrypt_mime (_fp, &fp, _cur, &cur); - mutt_free_body (&_cur); - safe_fclose (&_fp); + body_list_wipe(&_cur); + m_fclose(&_fp); } } else @@ -1078,14 +1063,12 @@ void mutt_view_attachments (HEADER * hdr) case OP_DELETE: CHECK_READONLY; -#ifdef USE_POP if (Context->magic == M_POP) { mutt_flushinp (); mutt_error _("Can't delete attachment from POP server."); break; } -#endif #ifdef USE_NNTP if (Context->magic == M_NNTP) { @@ -1245,8 +1228,8 @@ void mutt_view_attachments (HEADER * hdr) idxmax = 0; if (need_secured && secured) { - fclose (fp); - mutt_free_body (&cur); + m_fclose(&fp); + body_list_wipe(&cur); } mutt_menuDestroy (&menu);