projects
/
apps
/
madmutt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use file descriptor instead of path for mutt_decode_save_attachment()
[apps/madmutt.git]
/
attach.c
diff --git
a/attach.c
b/attach.c
index
2b9fb0f
..
7bc9c43
100644
(file)
--- a/
attach.c
+++ b/
attach.c
@@
-515,7
+515,7
@@
int mutt_view_attachment (FILE * fp, BODY * a, int flag, HEADER * hdr,
/* Use built-in handler */
set_option (OPTVIEWATTACH); /* disable the "use 'v' to view this part"
* message in case of error */
/* Use built-in handler */
set_option (OPTVIEWATTACH); /* disable the "use 'v' to view this part"
* message in case of error */
- if (mutt_decode_save_attachment (fp, a, pagerf
ile, M_DISPLAY, 0
)) {
+ if (mutt_decode_save_attachment (fp, a, pagerf
d, M_DISPLAY
)) {
unset_option (OPTVIEWATTACH);
goto return_error;
}
unset_option (OPTVIEWATTACH);
goto return_error;
}
@@
-765,8
+765,8
@@
int mutt_save_attachment (FILE * fp, BODY * m, char *path, int flags,
}
/* returns 0 on success, -1 on error */
}
/* returns 0 on success, -1 on error */
-int mutt_decode_save_attachment (FILE * fp, BODY * m,
char *path
,
- int displaying
, int flags
)
+int mutt_decode_save_attachment (FILE * fp, BODY * m,
int pathfd
,
+ int displaying)
{
STATE s;
unsigned int saved_encoding = 0;
{
STATE s;
unsigned int saved_encoding = 0;
@@
-776,10
+776,7
@@
int mutt_decode_save_attachment (FILE * fp, BODY * m, char *path,
p_clear(&s, 1);
s.flags = displaying;
p_clear(&s, 1);
s.flags = displaying;
- if (flags == M_SAVE_APPEND)
- s.fpout = fopen (path, "a");
- else
- s.fpout = safe_fopen (path, "w");
+ s.fpout = fdopen (pathfd, "w");
if (s.fpout == NULL) {
mutt_perror ("fopen");
if (s.fpout == NULL) {
mutt_perror ("fopen");
@@
-931,14
+928,15
@@
int mutt_print_attachment (FILE * fp, BODY * a)
/* decode and print */
int rc = 0;
/* decode and print */
int rc = 0;
+ int newfile_fd = 0;
ifp = NULL;
fpout = NULL;
ifp = NULL;
fpout = NULL;
-
mutt_mktemp (newfile
);
- if (mutt_decode_save_attachment (fp, a, newfile
, M_PRINTING, 0
) == 0) {
+
newfile_fd = m_tempfd(newfile, sizeof(newfile), NONULL(Tempdir), NULL
);
+ if (mutt_decode_save_attachment (fp, a, newfile
_fd, M_PRINTING
) == 0) {
- if ((ifp = f
open (newfile
, "r")) == NULL) {
+ if ((ifp = f
dopen (newfile_fd
, "r")) == NULL) {
mutt_perror ("fopen");
goto bail0;
}
mutt_perror ("fopen");
goto bail0;
}
@@
-952,7
+950,7
@@
int mutt_print_attachment (FILE * fp, BODY * a)
}
mutt_copy_stream (ifp, fpout);
}
mutt_copy_stream (ifp, fpout);
-
+
m_fclose(&fpout);
m_fclose(&ifp);
m_fclose(&fpout);
m_fclose(&ifp);