/* returns 1 on success, 0 on error */
int mutt_pipe_attachment (FILE * fp, BODY * b, const char *path,
- char *outfile)
+ int out)
{
pid_t thepid;
- int out = -1;
int rv = 0;
- if (outfile && *outfile)
- if ((out = safe_open (outfile, O_CREAT | O_EXCL | O_WRONLY)) < 0) {
- mutt_perror ("open");
- return 0;
- }
-
mutt_endwin (NULL);
if (fp) {
STATE s;
p_clear(&s, 1);
- if (outfile && *outfile)
+ if (out)
thepid = mutt_create_filter_fd(path, &s.fpout, NULL, NULL, -1, out, -1);
else
thepid = mutt_create_filter(path, &s.fpout, NULL, NULL);
if ((ifp = fopen (b->filename, "r")) == NULL) {
mutt_perror ("fopen");
- if (outfile && *outfile) {
- close (out);
- unlink (outfile);
- }
return 0;
}
- if (outfile && *outfile)
+ if (out)
thepid = mutt_create_filter_fd (path, &ofp, NULL, NULL, -1, out, -1);
else
thepid = mutt_create_filter (path, &ofp, NULL, NULL);
bail:
- if (outfile && *outfile)
+ if (out)
close (out);
/*
tok = mime_which_token(type, -1);
if (tok == MIME_TEXT_PLAIN || tok == MIME_APPLICATION_POSTSCRIPT) {
- return (mutt_pipe_attachment (fp, a, NONULL (PrintCmd), NULL));
+ return (mutt_pipe_attachment (fp, a, NONULL (PrintCmd), 0));
}
if (mutt_can_decode (a)) {
int mutt_print_attachment (FILE *, BODY *);
int mutt_decode_save_attachment (FILE *, BODY *, int, int);
int mutt_save_attachment (FILE *, BODY *, char *, int, HEADER *);
-int mutt_pipe_attachment (FILE *, BODY *, const char *, char *);
+int mutt_pipe_attachment (FILE *, BODY *, const char *, int);
int mutt_view_attachment (FILE *, BODY *, int, HEADER *, ATTACHPTR **, short);
int mutt_is_autoview (BODY *, const char *);
void mutt_check_lookup_list (BODY *, char *, int);
{
char tfile[_POSIX_PATH_MAX];
char warning[STRING + _POSIX_PATH_MAX];
+ int tempfd;
if (afilter) {
snprintf (warning, sizeof (warning),
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);
}
}