* please see the file GPL in the top level source directory.
*/
-#if HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <lib-lib/mem.h>
-#include <lib-lib/file.h>
-#include <lib-lib/macros.h>
-#include <lib-lib/ascii.h>
+#include <lib-lib/lib-lib.h>
+#include <utime.h>
#include <lib-mime/mime.h>
+#include <lib-sys/exit.h>
+#include <lib-sys/unix.h>
+
+#include <lib-ui/curses.h>
+#include <lib-ui/enter.h>
+#include <lib-ui/menu.h>
+#include <lib-mx/mx.h>
+
#include "mutt.h"
-#include "enter.h"
+#include "alias.h"
#include "recvattach.h"
-#include "mutt_curses.h"
-#include "mutt_menu.h"
#include "sort.h"
#include "copy.h"
-#include "mx.h"
#include "pager.h"
#include <lib-crypt/crypt.h>
#include "mutt_idna.h"
-#include "rfc1524.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <imap/imap.h>
-#ifdef BUFFY_SIZE
-#include "buffy.h"
-#endif
-
-#include "lib/debug.h"
-
-#include <errno.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/wait.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <utime.h>
-
/* The folder the user last saved to. Used by ci_save_message() */
static char LastSaveFolder[_POSIX_PATH_MAX] = "";
mutt_parse_mime_message (Context, cur);
mutt_message_hook (Context, cur, M_MESSAGEHOOK);
- mutt_mktemp (tempfile);
- if ((fpout = safe_fopen (tempfile, "w")) == NULL) {
+ fpout = m_tempfile(tempfile, sizeof(tempfile), NONULL(Tempdir), NULL);
+ if (!fpout) {
mutt_error _("Could not create temporary file!");
-
- return (0);
+ return 0;
}
if (DisplayFilter && *DisplayFilter) {
-1, fileno (fpfilterout), -1);
if (filterpid < 0) {
mutt_error (_("Cannot create display filter"));
- safe_fclose (&fpfilterout);
+ m_fclose(&fpfilterout);
unlink (tempfile);
return 0;
}
(option (OPTWEED) ? (CH_WEED | CH_REORDER) : 0) |
CH_DECODE | CH_FROM);
if (res == 0 && (ferror(fpout) || feof(fpout))) {
- debug_print (1, ("_mutt_copy_message failed to detect EOF!\n"));
res = -1;
}
mx_close_message (&msg);
}
- if ((safe_fclose (&fpout) != 0 && errno != EPIPE) || res == -1) {
+ if ((m_fclose(&fpout) != 0 && errno != EPIPE) || res == -1) {
mutt_error (_("Could not copy message"));
if (fpfilterout != NULL) {
mutt_wait_filter (filterpid);
- safe_fclose (&fpfilterout);
+ m_fclose(&fpfilterout);
}
#if 0
/* this is maybe just plain wrong but it makes the pager display
if (fpfilterout != NULL && mutt_wait_filter (filterpid) != 0)
mutt_any_key_to_continue (NULL);
- safe_fclose (&fpfilterout); /* XXX - check result? */
+ m_fclose(&fpfilterout); /* XXX - check result? */
/* update crypto information for this message */
if (mutt_addrlist_to_idna (adr, &err) < 0) {
mutt_error (_("Bad IDN: '%s'"), err);
p_delete(&err);
- address_delete (&adr);
+ address_list_wipe(&adr);
return;
}
}
if (query_quadoption (OPT_BOUNCE, prompt) != M_YES) {
- address_delete (&adr);
+ address_list_wipe(&adr);
CLEARLINE (LINES - 1);
mutt_message (h ? _("Message not bounced.") : _("Messages not bounced."));
return;
CLEARLINE (LINES - 1);
rc = mutt_bounce_message (NULL, h, adr);
- address_delete (&adr);
+ address_list_wipe(&adr);
/* If no error, or background, display message. */
if ((rc == 0) || (rc == S_BKG))
mutt_message (h ? _("Message bounced.") : _("Messages bounced."));
}
pipe_msg (h, fpout, decode, print);
- fclose (fpout);
+ m_fclose(&fpout);
rc = mutt_wait_filter (thepid);
}
else { /* handle tagged messages */
/* add the message separator */
if (sep)
fputs (sep, fpout);
- safe_fclose (&fpout);
+ m_fclose(&fpout);
if (mutt_wait_filter (thepid) != 0)
rc = 1;
}
fputs (sep, fpout);
}
}
- safe_fclose (&fpout);
+ m_fclose(&fpout);
if (mutt_wait_filter (thepid) != 0)
rc = 1;
}
char prompt[SHORT_STRING], buf[_POSIX_PATH_MAX];
CONTEXT ctx;
struct stat st;
-
-#ifdef BUFFY_SIZE
- BUFFY *tmp = NULL;
-#else
struct utimbuf ut;
-#endif
*redraw = 0;
mx_close_mailbox (&ctx, NULL);
if (need_buffy_cleanup) {
-#ifdef BUFFY_SIZE
- tmp = buffy_find_mailbox (buf);
- if (tmp && tmp->new <= 0)
- buffy_update_mailbox (tmp);
-#else
/* fix up the times so buffy won't get confused */
if (st.st_mtime > st.st_atime) {
ut.actime = st.st_atime;
ut.modtime = time (NULL);
utime (buf, &ut);
- }
- else
+ } else {
utime (buf, NULL);
-#endif
+ }
}
mutt_clear_error ();
char buf[LONG_STRING];
char obuf[LONG_STRING];
char tmp[STRING];
- PARAMETER *p;
char charset[STRING];
char *cp;
short charset_changed = 0;
short type_changed = 0;
- cp = mutt_get_parameter ("charset", b->parameter);
+ cp = parameter_getval(b->parameter, "charset");
m_strcpy(charset, sizeof(charset), NONULL(cp));
snprintf (buf, sizeof (buf), "%s/%s", TYPE (b), b->subtype);
m_strcpy(obuf, sizeof(obuf), buf);
if (b->parameter) {
- size_t l;
+ parameter_t *p;
+ ssize_t l;
for (p = b->parameter; p; p = p->next) {
l = m_strlen(buf);
return;
/* clean up previous junk */
- parameter_delete(&b->parameter);
+ parameter_list_wipe(&b->parameter);
p_delete(&b->subtype);
mutt_parse_content_type (buf, b);
snprintf (tmp, sizeof (tmp), "%s/%s", TYPE (b), NONULL (b->subtype));
type_changed = ascii_strcasecmp (tmp, obuf);
charset_changed =
- ascii_strcasecmp (charset, mutt_get_parameter ("charset", b->parameter));
+ ascii_strcasecmp (charset, parameter_getval(b->parameter, "charset"));
/* if in send mode, check for conversion - current setting is default. */
int r;
snprintf (tmp, sizeof (tmp), _("Convert to %s upon sending?"),
- mutt_get_parameter ("charset", b->parameter));
+ parameter_getval(b->parameter, "charset"));
if ((r = mutt_yesorno (tmp, !b->noconv)) != -1)
b->noconv = (r == M_NO);
}
if (type_changed)
mutt_sleep (1);
mutt_message (_("Character set changed to %s; %s."),
- mutt_get_parameter ("charset", b->parameter),
+ parameter_getval(b->parameter, "charset"),
b->noconv ? _("not converting") : _("converting"));
}
b->force_charset |= charset_changed ? 1 : 0;
if (!is_multipart(b) && b->parts)
- mutt_free_body (&b->parts);
+ body_list_wipe(&b->parts);
if (!mutt_is_message_type (b->type, b->subtype) && b->hdr) {
b->hdr->content = NULL;
header_delete(&b->hdr);