projects
/
apps
/
madmutt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
make rx_t be chaine-able so that we can get rid of list2_t (stage 1).
[apps/madmutt.git]
/
send.c
diff --git
a/send.c
b/send.c
index
eb57837
..
ace09c0
100644
(file)
--- a/
send.c
+++ b/
send.c
@@
-7,37
+7,16
@@
* please see the file GPL in the top level source directory.
*/
* please see the file GPL in the top level source directory.
*/
-#if HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <dirent.h>
-#include <time.h>
-#include <sys/types.h>
+#include <lib-lib/lib-lib.h>
#include <utime.h>
#include <utime.h>
-#include <lib-lib/mem.h>
-#include <lib-lib/str.h>
-#include <lib-lib/ascii.h>
-#include <lib-lib/macros.h>
-#include <lib-lib/file.h>
-#include <lib-lib/debug.h>
-#include <lib-lib/url.h>
-
#include <lib-mime/mime.h>
#include <lib-mime/mime.h>
-
+#include <lib-mime/rfc3676.h>
+#include <lib-sys/unix.h>
#include <lib-ui/curses.h>
#include <lib-ui/enter.h>
#include <lib-ui/curses.h>
#include <lib-ui/enter.h>
-#include "mutt.h"
-#include "rfc3676.h"
+#include "alias.h"
#include "keymap.h"
#include "copy.h"
#include "mx.h"
#include "keymap.h"
#include "copy.h"
#include "mx.h"
@@
-110,13
+89,13
@@
static address_t *mutt_remove_xrefs (address_t * a, address_t * b)
if (prev) {
prev->next = b->next;
b->next = NULL;
if (prev) {
prev->next = b->next;
b->next = NULL;
- address_
delete
(&b);
+ address_
list_wipe
(&b);
b = prev;
}
else {
top = top->next;
b->next = NULL;
b = prev;
}
else {
top = top->next;
b->next = NULL;
- address_
delete
(&b);
+ address_
list_wipe
(&b);
b = top;
}
}
b = top;
}
}
@@
-152,7
+131,7
@@
static address_t *remove_user (address_t * a, int leave_only)
a = a->next;
if (!leave_only || a || last) {
tmp->next = NULL;
a = a->next;
if (!leave_only || a || last) {
tmp->next = NULL;
- address_
delete
(&tmp);
+ address_
list_wipe
(&tmp);
}
else
last = top = tmp;
}
else
last = top = tmp;
@@
-192,7
+171,7
@@
static int edit_address (address_t ** a, const char *field)
rfc822_write_address (buf, sizeof (buf), *a, 0);
if (mutt_get_field (field, buf, sizeof (buf), M_ALIAS) != 0)
return (-1);
rfc822_write_address (buf, sizeof (buf), *a, 0);
if (mutt_get_field (field, buf, sizeof (buf), M_ALIAS) != 0)
return (-1);
- address_
delete
(a);
+ address_
list_wipe
(a);
*a = mutt_expand_aliases (mutt_parse_adrlist (NULL, buf));
if ((idna_ok = mutt_addrlist_to_idna (*a, &err)) != 0) {
mutt_error (_("Error: '%s' is a bad IDN."), err);
*a = mutt_expand_aliases (mutt_parse_adrlist (NULL, buf));
if ((idna_ok = mutt_addrlist_to_idna (*a, &err)) != 0) {
mutt_error (_("Error: '%s' is a bad IDN."), err);
@@
-208,7
+187,7
@@
static int edit_address (address_t ** a, const char *field)
static int edit_envelope (ENVELOPE * en, int flags)
{
char buf[HUGE_STRING];
static int edit_envelope (ENVELOPE * en, int flags)
{
char buf[HUGE_STRING];
-
LIST
*uh = UserHeader;
+
string_list_t
*uh = UserHeader;
regmatch_t pat_match[1];
#ifdef USE_NNTP
regmatch_t pat_match[1];
#ifdef USE_NNTP
@@
-302,7
+281,7
@@
static int edit_envelope (ENVELOPE * en, int flags)
}
#ifdef USE_NNTP
}
#ifdef USE_NNTP
-char *nntp_get_header(const char *s)
+
static
char *nntp_get_header(const char *s)
{
return m_strdup(skipspaces(s));
}
{
return m_strdup(skipspaces(s));
}
@@
-310,7
+289,7
@@
char *nntp_get_header(const char *s)
static void process_user_recips (ENVELOPE * env)
{
static void process_user_recips (ENVELOPE * env)
{
-
LIST
*uh = UserHeader;
+
string_list_t
*uh = UserHeader;
for (; uh; uh = uh->next) {
if (ascii_strncasecmp ("to:", uh->data, 3) == 0)
for (; uh; uh = uh->next) {
if (ascii_strncasecmp ("to:", uh->data, 3) == 0)
@@
-332,8
+311,8
@@
static void process_user_recips (ENVELOPE * env)
static void process_user_header (ENVELOPE * env)
{
static void process_user_header (ENVELOPE * env)
{
-
LIST
*uh = UserHeader;
-
LIST
*last = env->userhdrs;
+
string_list_t
*uh = UserHeader;
+
string_list_t
*last = env->userhdrs;
if (last)
while (last->next)
if (last)
while (last->next)
@@
-342,11
+321,11
@@
static void process_user_header (ENVELOPE * env)
for (; uh; uh = uh->next) {
if (ascii_strncasecmp ("from:", uh->data, 5) == 0) {
/* User has specified a default From: address. Remove default address */
for (; uh; uh = uh->next) {
if (ascii_strncasecmp ("from:", uh->data, 5) == 0) {
/* User has specified a default From: address. Remove default address */
- address_
delete
(&env->from);
+ address_
list_wipe
(&env->from);
env->from = rfc822_parse_adrlist (env->from, uh->data + 5);
}
else if (ascii_strncasecmp ("reply-to:", uh->data, 9) == 0) {
env->from = rfc822_parse_adrlist (env->from, uh->data + 5);
}
else if (ascii_strncasecmp ("reply-to:", uh->data, 9) == 0) {
- address_
delete
(&env->reply_to);
+ address_
list_wipe
(&env->reply_to);
env->reply_to = rfc822_parse_adrlist (env->reply_to, uh->data + 9);
}
else if (ascii_strncasecmp ("message-id:", uh->data, 11) == 0)
env->reply_to = rfc822_parse_adrlist (env->reply_to, uh->data + 9);
}
else if (ascii_strncasecmp ("message-id:", uh->data, 11) == 0)
@@
-362,11
+341,11
@@
static void process_user_header (ENVELOPE * env)
ascii_strncasecmp ("supersedes:", uh->data, 11) != 0 &&
ascii_strncasecmp ("subject:", uh->data, 8) != 0) {
if (last) {
ascii_strncasecmp ("supersedes:", uh->data, 11) != 0 &&
ascii_strncasecmp ("subject:", uh->data, 8) != 0) {
if (last) {
- last->next =
mutt_new_list
();
+ last->next =
string_item_new
();
last = last->next;
}
else
last = last->next;
}
else
- last = env->userhdrs =
mutt_new_list
();
+ last = env->userhdrs =
string_item_new
();
last->data = m_strdup(uh->data);
}
}
last->data = m_strdup(uh->data);
}
}
@@
-585,25
+564,6
@@
int mutt_fetch_recips (ENVELOPE * out, ENVELOPE * in, int flags)
return 0;
}
return 0;
}
-LIST *mutt_make_references (ENVELOPE * e)
-{
- LIST *t = NULL, *l = NULL;
-
- if (e->references)
- l = mutt_copy_list (e->references);
- else
- l = mutt_copy_list (e->in_reply_to);
-
- if (e->message_id) {
- t = mutt_new_list ();
- t->data = m_strdup(e->message_id);
- t->next = l;
- l = t;
- }
-
- return l;
-}
-
void mutt_fix_reply_recipients (ENVELOPE * env)
{
mutt_expand_aliases_env (env);
void mutt_fix_reply_recipients (ENVELOPE * env)
{
mutt_expand_aliases_env (env);
@@
-617,8
+577,8
@@
void mutt_fix_reply_recipients (ENVELOPE * env)
}
/* the CC field can get cluttered, especially with lists */
}
/* the CC field can get cluttered, especially with lists */
-
env->to = mutt_remove_duplicates
(env->to);
-
env->cc = mutt_remove_duplicates
(env->cc);
+
address_list_uniq
(env->to);
+
address_list_uniq
(env->cc);
env->cc = mutt_remove_xrefs (env->to, env->cc);
if (env->cc && !env->to) {
env->cc = mutt_remove_xrefs (env->to, env->cc);
if (env->cc && !env->to) {
@@
-656,10
+616,29
@@
void mutt_make_misc_reply_headers (ENVELOPE * env, CONTEXT * ctx,
#endif
}
#endif
}
+static string_list_t *mutt_make_references (ENVELOPE * e)
+{
+ string_list_t *t = NULL, *l = NULL;
+
+ if (e->references)
+ l = string_list_dup(e->references);
+ else
+ l = string_list_dup(e->in_reply_to);
+
+ if (e->message_id) {
+ t = string_item_new();
+ t->data = m_strdup(e->message_id);
+ t->next = l;
+ l = t;
+ }
+
+ return l;
+}
+
void mutt_add_to_reference_headers (ENVELOPE * env, ENVELOPE * curenv,
void mutt_add_to_reference_headers (ENVELOPE * env, ENVELOPE * curenv,
-
LIST *** pp, LIST
*** qq)
+
string_list_t *** pp, string_list_t
*** qq)
{
{
-
LIST
**p = NULL, **q = NULL;
+
string_list_t
**p = NULL, **q = NULL;
if (pp)
p = *pp;
if (pp)
p = *pp;
@@
-679,7
+658,7
@@
void mutt_add_to_reference_headers (ENVELOPE * env, ENVELOPE * curenv,
*p = mutt_make_references (curenv);
if (curenv->message_id) {
*p = mutt_make_references (curenv);
if (curenv->message_id) {
- *q =
mutt_new_list
();
+ *q =
string_item_new
();
(*q)->data = m_strdup(curenv->message_id);
}
(*q)->data = m_strdup(curenv->message_id);
}
@@
-698,7
+677,7
@@
mutt_make_reference_headers (ENVELOPE * curenv, ENVELOPE * env, CONTEXT * ctx)
if (!curenv) {
HEADER *h;
if (!curenv) {
HEADER *h;
-
LIST
**p = NULL, **q = NULL;
+
string_list_t
**p = NULL, **q = NULL;
int i;
for (i = 0; i < ctx->vcount; i++) {
int i;
for (i = 0; i < ctx->vcount; i++) {
@@
-925,7
+904,7
@@
void mutt_set_followup_to (ENVELOPE * e)
}
}
}
}
-
e->mail_followup_to = mutt_remove_duplicates
(e->mail_followup_to);
+
address_list_uniq
(e->mail_followup_to);
}
}
}
}
@@
-1174,11
+1153,11
@@
int ci_send_message (int flags, /* send mode */
/* Use any list-post header as a template */
url_parse_mailto (msg->env, NULL, cur->env->list_post);
/* We don't let them set the sender's address. */
/* Use any list-post header as a template */
url_parse_mailto (msg->env, NULL, cur->env->list_post);
/* We don't let them set the sender's address. */
- address_
delete
(&msg->env->from);
+ address_
list_wipe
(&msg->env->from);
}
if (!(flags & (SENDKEY | SENDPOSTPONED | SENDRESEND))) {
}
if (!(flags & (SENDKEY | SENDPOSTPONED | SENDRESEND))) {
- pbody =
mutt_new_body
();
+ pbody =
body_new
();
pbody->next = msg->content; /* don't kill command-line attachments */
msg->content = pbody;
pbody->next = msg->content; /* don't kill command-line attachments */
msg->content = pbody;
@@
-1192,9
+1171,9
@@
int ci_send_message (int flags, /* send mode */
msg->content->disposition = DISPINLINE;
if (option (OPTTEXTFLOWED) && msg->content->type == TYPETEXT
&& !ascii_strcasecmp (msg->content->subtype, "plain")) {
msg->content->disposition = DISPINLINE;
if (option (OPTTEXTFLOWED) && msg->content->type == TYPETEXT
&& !ascii_strcasecmp (msg->content->subtype, "plain")) {
-
mutt_set_parameter ("format", "flowed", &msg->content->parameter
);
+
parameter_setval(&msg->content->parameter, "format", "flowed"
);
if (option (OPTDELSP))
if (option (OPTDELSP))
-
mutt_set_parameter ("delsp", "yes", &msg->content->parameter
);
+
parameter_setval(&msg->content->parameter, "delsp", "yes"
);
}
if (!tempfile) {
}
if (!tempfile) {
@@
-1208,8
+1187,6
@@
int ci_send_message (int flags, /* send mode */
}
if (!tempfp) {
}
if (!tempfp) {
- debug_print (1, ("can't create tempfile %s (errno=%d)\n",
- msg->content->filename, errno));
mutt_perror (msg->content->filename);
goto cleanup;
}
mutt_perror (msg->content->filename);
goto cleanup;
}
@@
-1302,7
+1279,7
@@
int ci_send_message (int flags, /* send mode */
msg->replied = 0;
if (killfrom) {
msg->replied = 0;
if (killfrom) {
- address_
delete
(&msg->env->from);
+ address_
list_wipe
(&msg->env->from);
killfrom = 0;
}
killfrom = 0;
}
@@
-1419,7
+1396,7
@@
int ci_send_message (int flags, /* send mode */
query_quadoption (OPT_FORWEDIT,
_("Edit forwarded message?")) == M_YES)) {
/* If the this isn't a text message, look for a mailcap edit command */
query_quadoption (OPT_FORWEDIT,
_("Edit forwarded message?")) == M_YES)) {
/* If the this isn't a text message, look for a mailcap edit command */
- if (
mutt_needs_mailcap
(msg->content)) {
+ if (
rfc1524_mailcap_isneeded
(msg->content)) {
if (!mutt_edit_attachment (msg->content))
goto cleanup;
} else if (option (OPTEDITHDRS)) {
if (!mutt_edit_attachment (msg->content))
goto cleanup;
} else if (option (OPTEDITHDRS)) {
@@
-1473,7
+1450,7
@@
int ci_send_message (int flags, /* send mode */
}
mutt_select_fcc (fcc, sizeof (fcc), msg);
if (killfrom) {
}
mutt_select_fcc (fcc, sizeof (fcc), msg);
if (killfrom) {
- address_
delete
(&msg->env->from);
+ address_
list_wipe
(&msg->env->from);
killfrom = 0;
}
}
killfrom = 0;
}
}
@@
-1727,10
+1704,10
@@
int ci_send_message (int flags, /* send mode */
if (save_sig) {
/* cleanup the second signature structures */
if (save_content->parts) {
if (save_sig) {
/* cleanup the second signature structures */
if (save_content->parts) {
-
mutt_free_body
(&save_content->parts->next);
+
body_list_wipe
(&save_content->parts->next);
save_content->parts = NULL;
}
save_content->parts = NULL;
}
-
mutt_free_body
(&save_content);
+
body_list_wipe
(&save_content);
/* restore old signature and attachments */
msg->content->parts->next = save_sig;
/* restore old signature and attachments */
msg->content->parts->next = save_sig;
@@
-1738,7
+1715,7
@@
int ci_send_message (int flags, /* send mode */
}
else if (save_content) {
/* destroy the new encrypted body. */
}
else if (save_content) {
/* destroy the new encrypted body. */
-
mutt_free_body
(&save_content);
+
body_list_wipe
(&save_content);
}
}
}
}
@@
-1754,11
+1731,11
@@
int ci_send_message (int flags, /* send mode */
if ((msg->security & ENCRYPT)
|| ((msg->security & SIGN)
&& msg->content->type == TYPEAPPLICATION)) {
if ((msg->security & ENCRYPT)
|| ((msg->security & SIGN)
&& msg->content->type == TYPEAPPLICATION)) {
-
mutt_free_body
(&msg->content); /* destroy PGP data */
+
body_list_wipe
(&msg->content); /* destroy PGP data */
msg->content = clear_content; /* restore clear text. */
}
else if ((msg->security & SIGN) && msg->content->type == TYPEMULTIPART) {
msg->content = clear_content; /* restore clear text. */
}
else if ((msg->security & SIGN) && msg->content->type == TYPEMULTIPART) {
-
mutt_free_body
(&msg->content->parts->next); /* destroy sig */
+
body_list_wipe
(&msg->content->parts->next); /* destroy sig */
msg->content = mutt_remove_multipart (msg->content);
}
msg->content = mutt_remove_multipart (msg->content);
}
@@
-1786,7
+1763,7
@@
int ci_send_message (int flags, /* send mode */
p_delete(&pgpkeylist);
if (free_clear_content)
p_delete(&pgpkeylist);
if (free_clear_content)
-
mutt_free_body
(&clear_content);
+
body_list_wipe
(&clear_content);
if (flags & SENDREPLY) {
if (cur && ctx)
if (flags & SENDREPLY) {
if (cur && ctx)