#include <lib-mime/mime.h>
-#include <lib-ui/curses.h>
-#include <lib-ui/enter.h>
+#include <lib-ui/lib-ui.h>
#include <lib-ui/menu.h>
#include <lib-mx/mx.h>
/* some helper functions to verify that we are exclusively operating
* on message/rfc822 attachments
*/
-
-static short check_msg (BODY * b, short err)
+static int check_all_msg(ATTACHPTR **idx, int idxlen, BODY *cur, bool err)
{
- if (!mutt_is_message_type (b->type, b->subtype)) {
+ if (cur) {
+ if (!mutt_is_message_type(cur))
+ goto error;
+ } else {
+ for (int i = 0; i < idxlen; i++) {
+ BODY *b = idx[i]->content;
+ if (b->tagged && !mutt_is_message_type(b))
+ goto error;
+ }
+ }
+ return 0;
+
+ error:
if (err)
- mutt_error _("You may only bounce message/rfc822 parts.");
+ mutt_error(_("You may only bounce message/rfc822 parts."));
return -1;
- }
- return 0;
}
-static short check_all_msg (ATTACHPTR ** idx, short idxlen,
- BODY * cur, short err)
-{
- short i;
-
- if (cur && check_msg (cur, err) == -1)
- return -1;
- else if (!cur) {
- for (i = 0; i < idxlen; i++) {
- if (idx[i]->content->tagged) {
- if (check_msg (idx[i]->content, err) == -1)
- return -1;
- }
- }
- }
- return 0;
-}
-
-
/* can we decode all tagged attachments? */
-
-static short check_can_decode (ATTACHPTR ** idx, short idxlen, BODY * cur)
+static int check_can_decode(ATTACHPTR ** idx, int idxlen, BODY * cur)
{
- short i;
-
- if (cur)
- return mutt_can_decode (cur);
+ if (cur)
+ return mutt_can_decode(cur);
- for (i = 0; i < idxlen; i++)
- if (idx[i]->content->tagged && !mutt_can_decode (idx[i]->content))
- return 0;
+ for (int i = 0; i < idxlen; i++) {
+ if (idx[i]->content->tagged && !mutt_can_decode(idx[i]->content))
+ return 0;
+ }
- return 1;
+ return -1;
}
-static short count_tagged (ATTACHPTR ** idx, short idxlen)
+static int count_tagged(ATTACHPTR **idx, int idxlen)
{
- short count = 0;
- short i;
+ int count = 0;
- for (i = 0; i < idxlen; i++)
- if (idx[i]->content->tagged)
- count++;
+ for (int i = 0; i < idxlen; i++) {
+ if (idx[i]->content->tagged)
+ count++;
+ }
- return count;
+ return count;
}
/* count the number of tagged children below a multipart or message
* attachment.
*/
-
static short count_tagged_children (ATTACHPTR ** idx, short idxlen, short i)
{
short level = idx[i]->level;
return count;
}
-\f
/**
}
buf[0] = 0;
- rfc822_write_address (buf, sizeof (buf), adr, 1);
+ rfc822_addrcat(buf, sizeof(buf), adr, 1);
-#define extra_space (15+7+2)
/*
* See commands.c.
*/
(p ? _("Bounce message to %s") : _("Bounce messages to %s")),
buf);
- if (mutt_strwidth (prompt) > COLS - extra_space) {
- mutt_format_string (prompt, sizeof (prompt) - 4,
- 0, COLS - extra_space, 0, 0,
+#define extra_space (15+7+2)
+ if (m_strwidth(prompt) > getmaxx(main_w) - extra_space) {
+ mutt_format_string (prompt, sizeof (prompt) - 4, 0,
+ getmaxx(main_w) - extra_space, 0, 0,
prompt, sizeof (prompt), 0);
m_strcat(prompt, sizeof(prompt), "...?");
} else {
m_strcat(prompt, sizeof(prompt), "?");
}
+#undef extra_space
if (query_quadoption (OPT_BOUNCE, prompt) != M_YES) {
address_list_wipe(&adr);
- CLEARLINE (LINES - 1);
mutt_message (p ? _("Message not bounced.") : _("Messages not bounced."));
return;
}
- CLEARLINE (LINES - 1);
-
if (cur)
ret = mutt_bounce_message (fp, cur->hdr, adr);
else {
mutt_error (p ? _("Error bouncing message!") :
_("Error bouncing messages!"));
}
-\f
/**
mutt_resend_message (fp, Context, idx[i]->content->hdr);
}
}
-\f
/**
** forward-message, from the attachment menu
break;
while (--i >= 0) {
- if (mutt_is_message_type
- (idx[i]->content->type, idx[i]->content->subtype)) {
+ if (mutt_is_message_type(idx[i]->content)) {
nchildren = count_tagged_children (idx, idxlen, i);
if (nchildren == nattach)
return idx[i]->content->hdr;
if (cur) {
for (i = 0; i < idxlen; i++) {
- if (mutt_is_message_type
- (idx[i]->content->type, idx[i]->content->subtype)
+ if (mutt_is_message_type(idx[i]->content)
&& is_parent (i, idx, idxlen, cur))
parent = idx[i]->content->hdr;
if (idx[i]->content == cur)
HEADER * hdr, FILE * ofp, char *_prefix)
{
int chflags = CH_DECODE;
- char prefix[SHORT_STRING];
+ char prefix[STRING];
if (option (OPTWEED))
chflags |= CH_WEED | CH_REORDER;
if (src->filename) {
use_disp = 1;
m_strcpy(tmp, sizeof(tmp), src->filename);
- }
- else {
+ } else {
use_disp = 0;
tmp[0] = '\0';
}
tmphdr->env = envelope_new();
mutt_make_forward_subject (tmphdr->env, Context, parent);
- mutt_mktemp (tmpbody);
- if ((tmpfp = safe_fopen (tmpbody, "w")) == NULL) {
- mutt_error (_("Can't open temporary file %s."), tmpbody);
+ tmpfp = m_tempfile(tmpbody, sizeof(tmpbody), NONULL(mod_core.tmpdir), NULL);
+ if (!tmpfp) {
+ mutt_error(_("Could not create temporary file"));
return;
}
}
mutt_forward_trailer (tmpfp);
-
- fclose (tmpfp);
- tmpfp = NULL;
+ m_fclose(&tmpfp);
/* now that we have the template, send it. */
ci_send_message (flags, tmphdr, tmpbody, NULL, parent);
return;
bail:
-
- if (tmpfp) {
- fclose (tmpfp);
- mutt_unlink (tmpbody);
- }
-
+ m_fclose(&tmpfp);
+ mutt_unlink(tmpbody);
header_delete(&tmphdr);
}
/* no MIME encapsulation */
- mutt_mktemp (tmpbody);
- if (!(tmpfp = safe_fopen (tmpbody, "w"))) {
- mutt_error (_("Can't create %s."), tmpbody);
+ tmpfp = m_tempfile(tmpbody, sizeof(tmpbody), NONULL(mod_core.tmpdir), NULL);
+ if (!tmpfp) {
+ mutt_error(_("Could not create temporary file"));
header_delete(&tmphdr);
return;
}
}
}
}
- fclose (tmpfp);
+ m_fclose(&tmpfp);
}
else if (rc == M_YES) { /* do MIME encapsulation - we don't need to do much here */
last = &tmphdr->content;
short nattach;
- if (check_all_msg (idx, idxlen, cur, 0) == 0)
+ if (check_all_msg (idx, idxlen, cur, 0) == 0) {
attach_forward_msgs (fp, hdr, idx, idxlen, cur, flags);
- else {
+ } else {
nattach = count_tagged (idx, idxlen);
attach_forward_bodies (fp, hdr, idx, idxlen, cur, nattach, flags);
}
}
-\f
/**
return -1;
}
-#ifdef USE_NNTP
- if ((flags & SENDNEWS)) {
- /* in case followup set Newsgroups: with Followup-To: if it present */
- if (!env->newsgroups && curenv &&
- m_strcasecmp(curenv->followup_to, "poster"))
- env->newsgroups = m_strdup(curenv->followup_to);
- }
- else
-#endif
- {
- if (parent) {
- if (mutt_fetch_recips (env, curenv, flags) == -1)
+ if (parent) {
+ if (mutt_fetch_recips (env, curenv, flags) == -1)
+ return -1;
+ } else {
+ for (i = 0; i < idxlen; i++) {
+ if (idx[i]->content->tagged
+ && mutt_fetch_recips (env, idx[i]->content->hdr->env,
+ flags) == -1)
return -1;
}
- else {
- for (i = 0; i < idxlen; i++) {
- if (idx[i]->content->tagged
- && mutt_fetch_recips (env, idx[i]->content->hdr->env,
- flags) == -1)
- return -1;
- }
- }
-
- if ((flags & SENDLISTREPLY) && !env->to) {
- mutt_error _("No mailing lists found!");
+ }
- return (-1);
- }
+ if ((flags & SENDLISTREPLY) && !env->to) {
+ mutt_error _("No mailing lists found!");
- mutt_fix_reply_recipients (env);
+ return (-1);
}
+
+ mutt_fix_reply_recipients (env);
mutt_make_misc_reply_headers (env, Context, curhdr, curenv);
if (parent)
}
_mutt_copy_message (tmpfp, fp, cur, cur->content, cmflags, chflags);
- mutt_make_post_indent (Context, cur, tmpfp);
}
void mutt_attach_reply (FILE * fp, HEADER * hdr,
char tmpbody[_POSIX_PATH_MAX];
FILE *tmpfp;
- char prefix[SHORT_STRING];
+ char prefix[STRING];
int rc;
-#ifdef USE_NNTP
- if (flags & SENDNEWS)
- set_option (OPTNEWSSEND);
- else
- unset_option (OPTNEWSSEND);
-#endif
-
if (check_all_msg (idx, idxlen, cur, 0) == -1) {
nattach = count_tagged (idx, idxlen);
if ((parent = find_parent (idx, idxlen, cur, nattach)) == NULL)
return;
}
- mutt_mktemp (tmpbody);
- if ((tmpfp = safe_fopen (tmpbody, "w")) == NULL) {
- mutt_error (_("Can't create %s."), tmpbody);
+ tmpfp = m_tempfile(tmpbody, sizeof(tmpbody), NONULL(mod_core.tmpdir), NULL);
+ if (!tmpfp) {
+ mutt_error(_("Could not create temporary file"));
header_delete(&tmphdr);
return;
}
}
}
- mutt_make_post_indent (Context, parent, tmpfp);
-
if (mime_reply_any && !cur &&
copy_problematic_attachments (fp, &tmphdr->content, idx, idxlen,
0) == NULL) {
header_delete(&tmphdr);
- fclose (tmpfp);
+ m_fclose(&tmpfp);
return;
}
}
- fclose (tmpfp);
+ m_fclose(&tmpfp);
if (ci_send_message (flags, tmphdr, tmpbody, NULL, parent) == 0)
mutt_set_flag (Context, hdr, M_REPLIED, 1);