rfc822 final touch
[apps/madmutt.git] / sendlib.c
index 7c22e2b..b2d283d 100644 (file)
--- a/sendlib.c
+++ b/sendlib.c
 #include <lib-lib/macros.h>
 #include <lib-lib/file.h>
 
+#include <lib-mime/mime.h>
+
 #include "mutt.h"
 #include "handler.h"
 #include "recvattach.h"
 #include "mutt_curses.h"
 #include "rfc2047.h"
-#include "rfc2231.h"
 #include "mx.h"
-#include "mime.h"
 #include "copy.h"
 #include "pager.h"
 #include "charset.h"
 #include <assert.h>
 #endif
 
-extern char RFC822Specials[];
-
 #define DISPOSITION(X) X==DISPATTACH?"attachment":"inline"
 
-const char MimeSpecials[] = "@.,;:<>[]\\\"()?/= \t";
-
 static char MsgIdPfx = 'A';
 
 static void transform_to_7bit (BODY * a, FILE * fpin);
@@ -301,7 +297,7 @@ int mutt_write_mime_header (BODY * a, FILE * f)
       buffer[0] = 0;
       tmp = m_strdup(p->value);
       encode = rfc2231_encode_string (&tmp);
-      rfc822_cat (buffer, sizeof (buffer), tmp, MimeSpecials);
+      rfc822_strcpy(buffer, sizeof(buffer), tmp, MimeSpecials);
 
       /* Dirty hack to make messages readable by Outlook Express 
        * for the Mac: force quotes around the boundary parameter
@@ -353,7 +349,7 @@ int mutt_write_mime_header (BODY * a, FILE * f)
       buffer[0] = 0;
       tmp = m_strdup(t);
       encode = rfc2231_encode_string (&tmp);
-      rfc822_cat (buffer, sizeof (buffer), tmp, MimeSpecials);
+      rfc822_strcpy(buffer, sizeof(buffer), tmp, MimeSpecials);
       p_delete(&tmp);
       fprintf (f, "; filename%s=%s", encode ? "*" : "", buffer);
     }
@@ -1376,10 +1372,10 @@ char *mutt_make_date (char *s, size_t len)
 
 /* wrapper around mutt_write_address() so we can handle very large
    recipient lists without needing a huge temporary buffer in memory */
-void mutt_write_address_list (ADDRESS * adr, FILE * fp, int linelen,
+void mutt_write_address_list (address_t * adr, FILE * fp, int linelen,
                               int display)
 {
-  ADDRESS *tmp;
+  address_t *tmp;
   char buf[LONG_STRING];
   int count = 0;
   int len;
@@ -1930,7 +1926,7 @@ send_msg(const char *path, const char **args, const char *msg, char **tempfile)
 }
 
 static const char **
-add_args(const char **args, size_t *argslen, size_t *argsmax, ADDRESS * addr)
+add_args(const char **args, size_t *argslen, size_t *argsmax, address_t * addr)
 {
   for (; addr; addr = addr->next) {
     /* weed out group mailboxes, since those are for display only */
@@ -1953,8 +1949,8 @@ add_option(const char **args, size_t *argslen, size_t *argsmax, const char *s)
     return (args);
 }
 
-static int mutt_invoke_sendmail (ADDRESS * from,        /* the sender */
-                                 ADDRESS * to, ADDRESS * cc, ADDRESS * bcc,     /* recips */
+static int mutt_invoke_sendmail (address_t * from,        /* the sender */
+                                 address_t * to, address_t * cc, address_t * bcc,     /* recips */
                                  const char *msg,       /* file containing message */
                                  int eightbit)
 {                               /* message contains 8bit chars */
@@ -2009,7 +2005,7 @@ static int mutt_invoke_sendmail (ADDRESS * from,        /* the sender */
       args = add_option(args, &argslen, &argsmax, "-B8BITMIME");
 
     if (option (OPTENVFROM)) {
-      ADDRESS *f = NULL;
+      address_t *f = NULL;
       if (EnvFrom)
         f = EnvFrom;
       else if (from && !from->next)
@@ -2073,8 +2069,8 @@ static int mutt_invoke_sendmail (ADDRESS * from,        /* the sender */
   return (i);
 }
 
-int mutt_invoke_mta (ADDRESS * from,    /* the sender */
-                     ADDRESS * to, ADDRESS * cc, ADDRESS * bcc, /* recips */
+int mutt_invoke_mta (address_t * from,    /* the sender */
+                     address_t * to, address_t * cc, address_t * bcc, /* recips */
                      const char *msg,   /* file containing message */
                      int eightbit)
 {                               /* message contains 8bit chars */
@@ -2152,13 +2148,13 @@ void mutt_prepare_envelope (ENVELOPE * env, int final)
        * recipients if there is no To: or Cc: field, so attempt to suppress
        * it by using an empty To: field.
        */
-      env->to = rfc822_new_address ();
+      env->to = address_new ();
       env->to->group = 1;
-      env->to->next = rfc822_new_address ();
+      env->to->next = address_new ();
 
       buffer[0] = 0;
-      rfc822_cat (buffer, sizeof (buffer), "undisclosed-recipients",
-                  RFC822Specials);
+      rfc822_strcpy(buffer, sizeof(buffer), "undisclosed-recipients",
+                    RFC822Specials);
 
       env->to->mailbox = m_strdup(buffer);
     }
@@ -2194,7 +2190,7 @@ void mutt_unprepare_envelope (ENVELOPE * env)
   for (item = env->userhdrs; item; item = item->next)
     rfc2047_decode (&item->data);
 
-  rfc822_free_address (&env->mail_followup_to);
+  address_delete (&env->mail_followup_to);
 
   /* back conversions */
   rfc2047_decode_adrlist (env->to);
@@ -2205,8 +2201,8 @@ void mutt_unprepare_envelope (ENVELOPE * env)
   rfc2047_decode (&env->subject);
 }
 
-static int _mutt_bounce_message (FILE * fp, HEADER * h, ADDRESS * to,
-                                 const char *resent_from, ADDRESS * env_from)
+static int _mutt_bounce_message (FILE * fp, HEADER * h, address_t * to,
+                                 const char *resent_from, address_t * env_from)
 {
   int i, ret = 0;
   FILE *f;
@@ -2259,9 +2255,9 @@ static int _mutt_bounce_message (FILE * fp, HEADER * h, ADDRESS * to,
   return ret;
 }
 
-int mutt_bounce_message (FILE * fp, HEADER * h, ADDRESS * to)
+int mutt_bounce_message (FILE * fp, HEADER * h, address_t * to)
 {
-  ADDRESS *from;
+  address_t *from;
   const char *fqdn = mutt_fqdn (1);
   char resent_from[STRING];
   int ret;
@@ -2286,18 +2282,18 @@ int mutt_bounce_message (FILE * fp, HEADER * h, ADDRESS * to)
 
   ret = _mutt_bounce_message (fp, h, to, resent_from, from);
 
-  rfc822_free_address (&from);
+  address_delete (&from);
 
   return ret;
 }
 
 
 /* given a list of addresses, return a list of unique addresses */
-ADDRESS *mutt_remove_duplicates (ADDRESS * addr)
+address_t *mutt_remove_duplicates (address_t * addr)
 {
-  ADDRESS *top = addr;
-  ADDRESS **last = &top;
-  ADDRESS *tmp;
+  address_t *top = addr;
+  address_t **last = &top;
+  address_t *tmp;
   int dup;
 
   while (addr) {
@@ -2315,7 +2311,7 @@ ADDRESS *mutt_remove_duplicates (ADDRESS * addr)
       *last = addr->next;
 
       addr->next = NULL;
-      rfc822_free_address (&addr);
+      address_delete (&addr);
 
       addr = *last;
     }