X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=recvattach.c;h=b9db799f523531d45a2020469f25d69324ffa9fe;hp=50d360160111cfd03586ad33975f7a41d4e353b7;hb=3b7a8f7577e7b40d39ba510f54bde0d3ec0cc58f;hpb=1eeaaac6bdcad962c41bf975a32078cc4a0e578c diff --git a/recvattach.c b/recvattach.c index 50d3601..b9db799 100644 --- a/recvattach.c +++ b/recvattach.c @@ -139,19 +139,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[STRING]; char charset[STRING]; - ATTACHPTR *aptr = (ATTACHPTR *) data; + ATTACHPTR *aptr = data.ptr; int optional = (flags & M_FORMAT_OPTIONAL); ssize_t l; @@ -191,7 +187,7 @@ const char *mutt_attach_fmt (char *dest, _mutt_make_string (s, sizeof (s), MsgFmt, NULL, aptr->content->hdr, M_FORMAT_FORCESUBJ | M_FORMAT_MAKEPRINT | - M_FORMAT_ARROWCURSOR); + (option(OPTARROWCURSOR) ? M_FORMAT_ARROWCURSOR : 0)); if (*s) { mutt_format_s (dest, destlen, prefix, s); break; @@ -312,19 +308,17 @@ const char *mutt_attach_fmt (char *dest, *dest = 0; } - if (optional) - m_strformat (dest, destlen, ifstring, mutt_attach_fmt, data, 0); - else if (flags & M_FORMAT_OPTIONAL) - m_strformat (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); - m_strformat (b, w, NONULL (AttachFormat), mutt_attach_fmt, - (unsigned long) (((ATTACHPTR **) menu->data)[num]), - M_FORMAT_ARROWCURSOR); + m_strformat(b, blen, COLS - SW, AttachFormat, mutt_attach_fmt, + ((ATTACHPTR **) menu->data)[num], + option(OPTARROWCURSOR) ? M_FORMAT_ARROWCURSOR : 0); } int mutt_tag_attach (MUTTMENU * menu, int n, int m) @@ -492,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); } } @@ -639,10 +632,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(Tempdir), 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);