tIn cas in alternative text/plain is zero length, display html. - rohrpost - A commandline mail client to change the world as we see it.
 (HTM) git clone git://r-36.net/rohrpost
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit eb0418f9817b86b09ca913a93bcf704b376ff97e
 (DIR) parent 1bbf319cf7e63b4bed0d253e89aeb1b5167de8d4
 (HTM) Author: Christoph Lohmann <20h@r-36.net>
       Date:   Tue, 28 Nov 2017 19:16:42 +0100
       
       In cas in alternative text/plain is zero length, display html.
       
       Diffstat:
         part.c                              |       3 ++-
         view.c                              |      15 ++++++++++++---
       
       2 files changed, 14 insertions(+), 4 deletions(-)
       ---
 (DIR) diff --git a/part.c b/part.c
       t@@ -247,7 +247,8 @@ partmain(int argc, char *argv[])
                                                status & TOSTDOUT, status & RAW);
                        }
        
       -                llist_free(partl);
       +                if (partl != NULL)
       +                        llist_free(partl);
                        mime_free(mime);
        
                        return retc;
 (DIR) diff --git a/view.c b/view.c
       t@@ -130,7 +130,7 @@ view_printpart(char *id, mime_t *mime, llist_t *dhdrs, llist_t *partl,
                        int options)
        {
                llistelem_t *delem, *helem, *part;
       -        char *hvalue, *textplainid;
       +        char *hvalue, *textplainid, *texthtmlid;
                int didprint, inpartl;
                llist_t *alpartl, *hlist;
        
       t@@ -186,14 +186,23 @@ view_printpart(char *id, mime_t *mime, llist_t *dhdrs, llist_t *partl,
        
                        if (!strncasecmp(mime->ct, "multipart/alternative", 21) &&
                                        (partl == NULL || inpartl)) {
       -                        textplainid = NULL;
       +                        texthtmlid = textplainid = NULL;
                                forllist(mime->parts, part) {
                                        if (!strncasecmp(((mime_t *)part->data)->ct,
       -                                                "text/plain", 10)) {
       +                                                "text/plain", 10)
       +                                        && (((mime_t *)part->data)->bodylen > 0)) {
                                                textplainid =
                                                        ((mime_t *)part->data)->partid;
                                        }
       +                                if (!strncasecmp(((mime_t *)part->data)->ct,
       +                                                "text/html", 9)
       +                                        && (((mime_t *)part->data)->bodylen > 0)) {
       +                                        texthtmlid =
       +                                                ((mime_t *)part->data)->partid;
       +                                }
                                }
       +                        if (textplainid == NULL && texthtmlid != NULL)
       +                                textplainid = texthtmlid;
        
                                alpartl = llist_new();
                                if (textplainid != NULL) {