missing 'WHERE' aka missing extern.
[apps/madmutt.git] / send.c
diff --git a/send.c b/send.c
index 10803c4..32370e3 100644 (file)
--- a/send.c
+++ b/send.c
@@ -178,7 +178,7 @@ static ADDRESS *find_mailing_lists (ADDRESS * t, ADDRESS * c)
   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;
@@ -490,10 +490,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,
-                              _
-                              ("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);
@@ -627,6 +626,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);
+
+  if (env->cc && !env->to) {
+    env->to = env->cc;
+    env->cc = NULL;
+  }
 }
 
 void mutt_make_forward_subject (ENVELOPE * env, CONTEXT * ctx, HEADER * cur)
@@ -1065,6 +1069,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 ();
@@ -1094,8 +1111,8 @@ int ci_send_message (int flags, /* send mode */
   char *pgpkeylist = NULL;
 
   /* save current value of "pgp_sign_as" */
-  char *signas = NULL;
-  char *tag = NULL, *err = NULL;
+  char *signas = NULL, *err = NULL;
+  const char *tag = NULL;
   char *ctype;
 
   int rv = -1;
@@ -1177,7 +1194,8 @@ int ci_send_message (int flags, /* send mode */
     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);
     mem_free (&ctype);
 
@@ -1428,9 +1446,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 */
-      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);
@@ -1438,9 +1457,16 @@ int ci_send_message (int flags, /* send mode */
                            sizeof (fcc));
         mutt_env_to_idna (msg->env, NULL, NULL);
       }
-      else
+      else {
         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);