]> granicus.if.org Git - neomutt/commitdiff
Factor out rfc2047_decode_envelope()
authorKevin McCarthy <kevin@8t8.us>
Mon, 10 Dec 2018 03:52:21 +0000 (19:52 -0800)
committerRichard Russon <rich@flatcap.org>
Mon, 7 Jan 2019 15:09:41 +0000 (15:09 +0000)
Co-authored-by: Richard Russon <rich@flatcap.org>
email/parse.c
email/rfc2047.c
email/rfc2047.h
mutt_url.c
sendlib.c

index 082802eaa9a2d8eb8c48f0e6cb38291b4eec15fd..6acce1cca9c438c9e977a3348a6a9c8e4880d942 100644 (file)
@@ -1120,23 +1120,12 @@ struct Envelope *mutt_rfc822_read_header(FILE *f, struct Email *e, bool user_hdr
     e->content->hdr_offset = e->offset;
     e->content->offset = ftello(f);
 
-    /* do RFC2047 decoding */
-    rfc2047_decode_addrlist(env->from);
-    rfc2047_decode_addrlist(env->to);
-    rfc2047_decode_addrlist(env->cc);
-    rfc2047_decode_addrlist(env->bcc);
-    rfc2047_decode_addrlist(env->reply_to);
-    rfc2047_decode_addrlist(env->mail_followup_to);
-    rfc2047_decode_addrlist(env->return_path);
-    rfc2047_decode_addrlist(env->sender);
-    rfc2047_decode_addrlist(env->x_original_to);
+    rfc2047_decode_envelope(env);
 
     if (env->subject)
     {
       regmatch_t pmatch[1];
 
-      rfc2047_decode(&env->subject);
-
       if (ReplyRegex && ReplyRegex->regex &&
           (regexec(ReplyRegex->regex, env->subject, 1, pmatch, 0) == 0))
       {
index ee385c01df9de7abe622e58e9f26842e4cb9cad4..722c4be66e303a649e65fd1537d666305aaba74e 100644 (file)
@@ -36,6 +36,7 @@
 #include <stdbool.h>
 #include <string.h>
 #include "mutt/mutt.h"
+#include "email/lib.h"
 #include "rfc2047.h"
 #include "address.h"
 #include "email_globals.h"
@@ -778,3 +779,21 @@ void rfc2047_decode_addrlist(struct Address *a)
     a = a->next;
   }
 }
+
+/**
+ * rfc2047_decode_envelope - Decode the fields of an Envelope
+ * @param env Envelope
+ */
+void rfc2047_decode_envelope(struct Envelope *env)
+{
+  rfc2047_decode_addrlist(env->from);
+  rfc2047_decode_addrlist(env->to);
+  rfc2047_decode_addrlist(env->cc);
+  rfc2047_decode_addrlist(env->bcc);
+  rfc2047_decode_addrlist(env->reply_to);
+  rfc2047_decode_addrlist(env->mail_followup_to);
+  rfc2047_decode_addrlist(env->return_path);
+  rfc2047_decode_addrlist(env->sender);
+  rfc2047_decode(&env->x_label);
+  rfc2047_decode(&env->subject);
+}
index 873aff2dc5f007871d4a12ddbd985578a35350e0..d264dbf1bbf098313736efadcb2af1dfcfde2215 100644 (file)
 #define MUTT_EMAIL_RFC2047_H
 
 struct Address;
+struct Envelope;
 
 void rfc2047_decode(char **pd);
 void rfc2047_encode(char **pd, const char *specials, int col, const char *charsets);
 
 void rfc2047_decode_addrlist(struct Address *a);
 void rfc2047_encode_addrlist(struct Address *addr, const char *tag);
+void rfc2047_decode_envelope(struct Envelope *env);
 
 #endif /* MUTT_EMAIL_RFC2047_H */
index 2617223ec478ddc4b09a87a8d78df4195747062d..185102f22adc25e6cc1f9aa5c9bf504ca0d7e53a 100644 (file)
@@ -117,16 +117,7 @@ int url_parse_mailto(struct Envelope *e, char **body, const char *src)
   }
 
   /* RFC2047 decode after the RFC822 parsing */
-  rfc2047_decode_addrlist(e->from);
-  rfc2047_decode_addrlist(e->to);
-  rfc2047_decode_addrlist(e->cc);
-  rfc2047_decode_addrlist(e->bcc);
-  rfc2047_decode_addrlist(e->reply_to);
-  rfc2047_decode_addrlist(e->mail_followup_to);
-  rfc2047_decode_addrlist(e->return_path);
-  rfc2047_decode_addrlist(e->sender);
-  rfc2047_decode(&e->x_label);
-  rfc2047_decode(&e->subject);
+  rfc2047_decode_envelope(e);
 
   rc = 0;
 
index 958fb2473fcf54bf8ab430a35dc530a57666790e..785c2d9b8a3f96d645f7fcd93ce8be3f50ddf1b4 100644 (file)
--- a/sendlib.c
+++ b/sendlib.c
@@ -2942,12 +2942,7 @@ void mutt_unprepare_envelope(struct Envelope *env)
   mutt_addr_free(&env->mail_followup_to);
 
   /* back conversions */
-  rfc2047_decode_addrlist(env->to);
-  rfc2047_decode_addrlist(env->cc);
-  rfc2047_decode_addrlist(env->bcc);
-  rfc2047_decode_addrlist(env->from);
-  rfc2047_decode_addrlist(env->reply_to);
-  rfc2047_decode(&env->subject);
+  rfc2047_decode_envelope(env);
 }
 
 /**