[balsa/wip/gmime3: 118/197] Decode all RFC-2047-encoded headers



commit f6e5b675c9e19183fbdf97e58c7476a6ae9469a7
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Sun Jun 25 19:04:30 2017 -0400

    Decode all RFC-2047-encoded headers
    
        * libbalsa/message.c
          (prepend_header_misc): decode header value;
          (libbalsa_message_user_hdrs_from_gmime): streamline code.

 ChangeLog          |    9 +++++++++
 libbalsa/message.c |   37 ++++++++++++++++++++-----------------
 2 files changed, 29 insertions(+), 17 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 51e2f13..6ec57d9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 2017-09-30  Peter Bloomfield  <pbloomfield bellsouth net>
 
        Remove unused make_gradient function, and build with
@@ -526,6 +527,14 @@
        * libbalsa/send.c (libbalsa_fill_msg_queue_item_from_queu): use
        GMimeFilterSmtpData to dot-stuff outgoing mail.
 
+2017-06-25  Peter Bloomfield  <pbloomfield bellsouth net>
+
+       Decode all RFC-2047-encoded headers
+
+       * libbalsa/message.c
+         (prepend_header_misc): decode header value;
+         (libbalsa_message_user_hdrs_from_gmime): streamline code.
+
 2017-06-19  Peter Bloomfield  <pbloomfield bellsouth net>
 
        Possible fix for Red Hat Bugzilla #1462546, reported by jamesbdonovan rambler ru
diff --git a/libbalsa/message.c b/libbalsa/message.c
index b5ab155..5120ba5 100644
--- a/libbalsa/message.c
+++ b/libbalsa/message.c
@@ -431,9 +431,10 @@ libbalsa_message_set_user_header(LibBalsaMessage * message,
                                                     g_strdup(value)));
 }
 
-static void
-prepend_header_misc(const char *name, const char *value,
-                    gpointer user_data)
+static GList *
+prepend_header_misc(GList      *res,
+                    const char *name,
+                    const char *value)
 {
     char lcname[28]; /* one byte longer than the longest ignored header */
     static const char ignored_headers[] =
@@ -441,22 +442,24 @@ prepend_header_misc(const char *name, const char *value,
         "message-id references in-reply-to status lines"
         "disposition-notification-to";
     unsigned i;
-    GList *res = *(GList **)user_data;
-    if (!*value)
+
+    if (value[0] == '\0')
        /* Empty header */
-       return;
+       return res;
+
     /* Standard Headers*/
-    for(i=0; i<sizeof(lcname)-1 && name[i]; i++)
+    for(i = 0; i < sizeof(lcname) - 1 && name[i] != '\0'; i++) {
         lcname[i] = tolower(name[i]);
-    if (i < sizeof(lcname)) {
-       /* short enough to be on the ignored-headers list */
-        lcname[i] = '\0';
-        if(strstr(ignored_headers, lcname))
-            return;
     }
+    lcname[i] = '\0';
+
+    if(strstr(ignored_headers, lcname) != NULL)
+        return res;
 
-    res = g_list_prepend(res, libbalsa_create_hdr_pair(name, g_strdup(value)));
-    *(GList **)user_data = res;
+    return
+        g_list_prepend(res,
+                       libbalsa_create_hdr_pair(name,
+                                                g_mime_utils_header_decode_text(value)));
 }
 
 /* 
@@ -529,9 +532,9 @@ libbalsa_message_user_hdrs_from_gmime(GMimeMessage * message)
         GMimeHeader *header;
 
         header = g_mime_header_list_get_header_at(hdrlist, i);
-        prepend_header_misc(g_mime_header_get_name(header),
-                            g_mime_header_get_value(header),
-                            &res);
+        res = prepend_header_misc(res,
+                                  g_mime_header_get_name(header),
+                                  g_mime_header_get_value(header));
     }
     
     return g_list_reverse(res);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]