projects
/
apps
/
madmutt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
drop mem_alloc and mem_free, use my own hand crafted optmized macros that
[apps/madmutt.git]
/
send.c
diff --git
a/send.c
b/send.c
index
10803c4
..
d2a743a
100644
(file)
--- a/
send.c
+++ b/
send.c
@@
-11,6
+11,8
@@
# include "config.h"
#endif
# include "config.h"
#endif
+#include <lib-lib/mem.h>
+
#include "mutt.h"
#include "enter.h"
#include "ascii.h"
#include "mutt.h"
#include "enter.h"
#include "ascii.h"
@@
-178,7
+180,7
@@
static ADDRESS *find_mailing_lists (ADDRESS * t, ADDRESS * c)
return top;
}
return top;
}
-static int edit_address (ADDRESS ** a,
/* const */
char *field)
+static int edit_address (ADDRESS ** a,
const
char *field)
{
char buf[HUGE_STRING];
char *err = NULL;
{
char buf[HUGE_STRING];
char *err = NULL;
@@
-196,7
+198,7
@@
static int edit_address (ADDRESS ** a, /* const */ char *field)
mutt_error (_("Error: '%s' is a bad IDN."), err);
mutt_refresh ();
mutt_sleep (2);
mutt_error (_("Error: '%s' is a bad IDN."), err);
mutt_refresh ();
mutt_sleep (2);
-
mem_free
(&err);
+
p_delete
(&err);
}
}
while (idna_ok != 0);
}
}
while (idna_ok != 0);
@@
-217,7
+219,7
@@
static int edit_envelope (ENVELOPE * en, int flags)
buf[0] = 0;
if (mutt_get_field ("Newsgroups: ", buf, sizeof (buf), 0) != 0)
return (-1);
buf[0] = 0;
if (mutt_get_field ("Newsgroups: ", buf, sizeof (buf), 0) != 0)
return (-1);
-
mem_free
(&en->newsgroups);
+
p_delete
(&en->newsgroups);
en->newsgroups = str_dup (buf);
if (en->followup_to)
en->newsgroups = str_dup (buf);
if (en->followup_to)
@@
-227,7
+229,7
@@
static int edit_envelope (ENVELOPE * en, int flags)
if (option (OPTASKFOLLOWUP)
&& mutt_get_field ("Followup-To: ", buf, sizeof (buf), 0) != 0)
return (-1);
if (option (OPTASKFOLLOWUP)
&& mutt_get_field ("Followup-To: ", buf, sizeof (buf), 0) != 0)
return (-1);
-
mem_free
(&en->followup_to);
+
p_delete
(&en->followup_to);
en->followup_to = str_dup (buf);
if (en->x_comment_to)
en->followup_to = str_dup (buf);
if (en->x_comment_to)
@@
-237,7
+239,7
@@
static int edit_envelope (ENVELOPE * en, int flags)
if (option (OPTXCOMMENTTO) && option (OPTASKXCOMMENTTO)
&& mutt_get_field ("X-Comment-To: ", buf, sizeof (buf), 0) != 0)
return (-1);
if (option (OPTXCOMMENTTO) && option (OPTASKXCOMMENTTO)
&& mutt_get_field ("X-Comment-To: ", buf, sizeof (buf), 0) != 0)
return (-1);
-
mem_free
(&en->x_comment_to);
+
p_delete
(&en->x_comment_to);
en->x_comment_to = str_dup (buf);
}
else
en->x_comment_to = str_dup (buf);
}
else
@@
-490,10
+492,9
@@
static int default_to (ADDRESS ** to, ENVELOPE * env, int flags, int hmfupto)
*/
if (!(flags & SENDGROUPREPLY) && mutt_is_list_cc (0, env->to, env->cc)) {
switch (query_quadoption (OPT_LISTREPLY,
*/
if (!(flags & SENDGROUPREPLY) && mutt_is_list_cc (0, env->to, env->cc)) {
switch (query_quadoption (OPT_LISTREPLY,
- _
- ("Message came from a mailing list. Reply to author only?")))
+ _("Message came from a mailing list. List-reply to mailing list?")))
{
{
- case M_
NO
:
+ case M_
YES
:
tmp = find_mailing_lists (env->to, env->cc);
rfc822_append (to, tmp);
rfc822_free_address (&tmp);
tmp = find_mailing_lists (env->to, env->cc);
rfc822_append (to, tmp);
rfc822_free_address (&tmp);
@@
-627,6
+628,11
@@
void mutt_fix_reply_recipients (ENVELOPE * env)
env->to = mutt_remove_duplicates (env->to);
env->cc = mutt_remove_duplicates (env->cc);
env->cc = mutt_remove_xrefs (env->to, env->cc);
env->to = mutt_remove_duplicates (env->to);
env->cc = mutt_remove_duplicates (env->cc);
env->cc = mutt_remove_xrefs (env->to, env->cc);
+
+ if (env->cc && !env->to) {
+ env->to = env->cc;
+ env->cc = NULL;
+ }
}
void mutt_make_forward_subject (ENVELOPE * env, CONTEXT * ctx, HEADER * cur)
}
void mutt_make_forward_subject (ENVELOPE * env, CONTEXT * ctx, HEADER * cur)
@@
-645,8
+651,8
@@
void mutt_make_misc_reply_headers (ENVELOPE * env, CONTEXT * ctx,
* been taken from a List-Post header. Is that correct?
*/
if (curenv->real_subj) {
* been taken from a List-Post header. Is that correct?
*/
if (curenv->real_subj) {
-
mem_free
(&env->subject);
- env->subject =
mem_malloc (str_len
(curenv->real_subj) + 5);
+
p_delete
(&env->subject);
+ env->subject =
p_new(char, str_len
(curenv->real_subj) + 5);
sprintf (env->subject, "Re: %s", curenv->real_subj); /* __SPRINTF_CHECKED__ */
}
else if (!env->subject)
sprintf (env->subject, "Re: %s", curenv->real_subj); /* __SPRINTF_CHECKED__ */
}
else if (!env->subject)
@@
-960,7
+966,7
@@
static ADDRESS *set_reverse_name (ENVELOPE * env)
if (tmp) {
tmp = rfc822_cpy_adr_real (tmp);
if (!option (OPTREVREAL))
if (tmp) {
tmp = rfc822_cpy_adr_real (tmp);
if (!option (OPTREVREAL))
-
mem_free
(&tmp->personal);
+
p_delete
(&tmp->personal);
if (!tmp->personal)
tmp->personal = str_dup (Realname);
}
if (!tmp->personal)
tmp->personal = str_dup (Realname);
}
@@
-981,8
+987,7
@@
ADDRESS *mutt_default_from (void)
adr = rfc822_cpy_adr_real (From);
else if (option (OPTUSEDOMAIN)) {
adr = rfc822_new_address ();
adr = rfc822_cpy_adr_real (From);
else if (option (OPTUSEDOMAIN)) {
adr = rfc822_new_address ();
- adr->mailbox =
- mem_malloc (str_len (Username) + str_len (fqdn) + 2);
+ adr->mailbox = p_new(char, str_len(Username) + str_len(fqdn) + 2);
sprintf (adr->mailbox, "%s@%s", NONULL (Username), NONULL (fqdn)); /* __SPRINTF_CHECKED__ */
}
else {
sprintf (adr->mailbox, "%s@%s", NONULL (Username), NONULL (fqdn)); /* __SPRINTF_CHECKED__ */
}
else {
@@
-1065,6
+1070,19
@@
static void decode_descriptions (BODY * b)
}
}
}
}
+static void fix_end_of_file (const char *data)
+{
+ FILE *fp;
+ int c;
+
+ if ((fp = safe_fopen (data, "a+")) == NULL)
+ return;
+ fseeko (fp, -1, SEEK_END);
+ if ((c = fgetc (fp)) != '\n')
+ fputc ('\n', fp);
+ safe_fclose (&fp);
+}
+
int mutt_resend_message (FILE * fp, CONTEXT * ctx, HEADER * cur)
{
HEADER *msg = mutt_new_header ();
int mutt_resend_message (FILE * fp, CONTEXT * ctx, HEADER * cur)
{
HEADER *msg = mutt_new_header ();
@@
-1094,8
+1112,8
@@
int ci_send_message (int flags, /* send mode */
char *pgpkeylist = NULL;
/* save current value of "pgp_sign_as" */
char *pgpkeylist = NULL;
/* save current value of "pgp_sign_as" */
- char *signas = NULL;
- c
har *tag = NULL, *err
= NULL;
+ char *signas = NULL
, *err = NULL
;
+ c
onst char *tag
= NULL;
char *ctype;
int rv = -1;
char *ctype;
int rv = -1;
@@
-1177,9
+1195,10
@@
int ci_send_message (int flags, /* send mode */
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;
- ctype = str_dup (ContentType);
+ if (!(ctype = str_dup (ContentType)))
+ ctype = str_dup ("text/plain");
mutt_parse_content_type (ctype, msg->content);
mutt_parse_content_type (ctype, msg->content);
-
mem_free
(&ctype);
+
p_delete
(&ctype);
msg->content->unlink = 1;
msg->content->use_disp = 0;
msg->content->unlink = 1;
msg->content->use_disp = 0;
@@
-1428,9
+1447,10
@@
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))
- mutt_edit_attachment (msg->content);
- else if (!Editor || str_cmp ("builtin", Editor) == 0)
+ if (mutt_needs_mailcap (msg->content)) {
+ if (!mutt_edit_attachment (msg->content))
+ goto cleanup;
+ } else if (!Editor || str_cmp ("builtin", Editor) == 0)
mutt_builtin_editor (msg->content->filename, msg, cur);
else if (option (OPTEDITHDRS)) {
mutt_env_to_local (msg->env);
mutt_builtin_editor (msg->content->filename, msg, cur);
else if (option (OPTEDITHDRS)) {
mutt_env_to_local (msg->env);
@@
-1438,9
+1458,16
@@
int ci_send_message (int flags, /* send mode */
sizeof (fcc));
mutt_env_to_idna (msg->env, NULL, NULL);
}
sizeof (fcc));
mutt_env_to_idna (msg->env, NULL, NULL);
}
- else
+ else
{
mutt_edit_file (Editor, msg->content->filename);
mutt_edit_file (Editor, msg->content->filename);
+ if (stat (msg->content->filename, &st) == 0) {
+ if (mtime != st.st_mtime)
+ fix_end_of_file (msg->content->filename);
+ } else
+ mutt_perror (msg->content->filename);
+ }
+
if (option (OPTTEXTFLOWED))
rfc3676_space_stuff (msg);
if (option (OPTTEXTFLOWED))
rfc3676_space_stuff (msg);
@@
-1552,7
+1579,7
@@
int ci_send_message (int flags, /* send mode */
if (mutt_env_to_idna (msg->env, &tag, &err)) {
mutt_error (_("Bad IDN in \"%s\": '%s'"), tag, err);
if (mutt_env_to_idna (msg->env, &tag, &err)) {
mutt_error (_("Bad IDN in \"%s\": '%s'"), tag, err);
-
mem_free
(&err);
+
p_delete
(&err);
if (!(flags & SENDBATCH))
goto main_loop;
else
if (!(flags & SENDBATCH))
goto main_loop;
else
@@
-1627,7
+1654,7
@@
int ci_send_message (int flags, /* send mode */
mutt_protect (msg, pgpkeylist) == -1) {
msg->content = mutt_remove_multipart (msg->content);
mutt_protect (msg, pgpkeylist) == -1) {
msg->content = mutt_remove_multipart (msg->content);
-
mem_free
(&pgpkeylist);
+
p_delete
(&pgpkeylist);
decode_descriptions (msg->content);
goto main_loop;
decode_descriptions (msg->content);
goto main_loop;
@@
-1791,7
+1818,7
@@
int ci_send_message (int flags, /* send mode */
#endif
if (WithCrypto && (msg->security & ENCRYPT))
#endif
if (WithCrypto && (msg->security & ENCRYPT))
-
mem_free
(&pgpkeylist);
+
p_delete
(&pgpkeylist);
if (WithCrypto && free_clear_content)
mutt_free_body (&clear_content);
if (WithCrypto && free_clear_content)
mutt_free_body (&clear_content);
@@
-1813,7
+1840,7
@@
cleanup:
if ((WithCrypto & APPLICATION_PGP) && (flags & SENDPOSTPONED)) {
if (signas) {
if ((WithCrypto & APPLICATION_PGP) && (flags & SENDPOSTPONED)) {
if (signas) {
-
mem_free
(&PgpSignAs);
+
p_delete
(&PgpSignAs);
PgpSignAs = signas;
}
}
PgpSignAs = signas;
}
}