* %s = size
* %u = unlink
*/
-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)
+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];
*dest = 0;
}
- if (optional)
- m_strformat (dest, destlen, ifstr, mutt_attach_fmt, data, 0);
- else if (flags & M_FORMAT_OPTIONAL)
- m_strformat (dest, destlen, elstr, 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,
- ((ATTACHPTR **) menu->data)[num],
- option(OPTARROWCURSOR) ? M_FORMAT_ARROWCURSOR : 0);
+ 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)
}
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(MCore.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);
}
}
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(MCore.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);