tmp
[apps/madmutt.git] / lib-mime / rfc2047.c
index 8d444bc..1d42403 100644 (file)
@@ -100,7 +100,7 @@ char *mutt_choose_charset(const char *fromcode, const char *charsets,
     const char *p = charsets;
 
     while (*p) {
-        char cset[SHORT_STRING];
+        char cset[STRING];
         const char *q;
         char *s;
         ssize_t slen, n;
@@ -561,13 +561,13 @@ static void _rfc2047_encode_string(char **pd, int encode_specials, int col)
     ssize_t elen;
     const char *charsets;
 
-    if (!Charset || !*pd)
+    if (!mod_cset.charset || !*pd)
         return;
 
-    charsets = m_strisempty(SendCharset) ? "UTF-8" : SendCharset;
+    charsets = m_strisempty(mod_cset.send_charset) ? "utf-8" : mod_cset.send_charset;
 
     rfc2047_encode(*pd, m_strlen(*pd), col,
-                   Charset, charsets, &e, &elen,
+                   mod_cset.charset, charsets, &e, &elen,
                    encode_specials ? RFC822Specials : NULL);
 
     p_delete(pd);
@@ -667,7 +667,7 @@ rfc2047_decode_word(char *d, size_t len, const char *p, const char *end)
     *q = '\0';
 
     if (*charset)
-        mutt_convert_string(&d0, charset, Charset, M_ICONV_HOOK_FROM);
+        mutt_convert_string(&d0, charset, mod_cset.charset, M_ICONV_HOOK_FROM);
     m_strcpy(d, len, d0);
     p_delete(&d0);
     return 0;
@@ -759,8 +759,6 @@ static ssize_t lwsrlen(const char *s, ssize_t n)
  */
 void rfc2047_decode(char **pd)
 {
-    const int strict_mime = option(OPTSTRICTMIME);
-
     const char *s = *pd;
     char *d0, *d;
     ssize_t dlen;
@@ -779,29 +777,28 @@ void rfc2047_decode(char **pd)
 
         if (!p) {
             /* no encoded words */
-            if (!strict_mime) {
-                ssize_t m, n;
-
-                n = m_strlen(s);
-                if (found_encoded && (m = lwslen(s, n)) != 0) {
-                    if (m != n)
-                        *d++ = ' ', dlen--;
-                    n -= m, s += m;
-                }
+            ssize_t m, n;
+
+            n = m_strlen(s);
+            if (found_encoded && (m = lwslen(s, n)) != 0) {
+                if (m != n)
+                    *d++ = ' ', dlen--;
+                n -= m, s += m;
+            }
+
+            if (mime_which_token(mod_cset.assumed_charset, -1) == MIME_US_ASCII) {
+                char *t;
 
-                if (mime_which_token(AssumedCharset, -1) == MIME_US_ASCII) {
-                    char *t;
-
-                    t = p_dupstr(s, n);
-                    if (mutt_convert_nonmime_string(&t) == 0) {
-                        d += m_strcpy(d, dlen, t);
-                    } else {
-                        d += m_strcpy(d, dlen, s);
-                    }
-                    p_delete(&t);
-                    break;
+                t = p_dupstr(s, n);
+                if (mutt_convert_nonmime_string(&t) == 0) {
+                    d += m_strcpy(d, dlen, t);
+                } else {
+                    d += m_strcpy(d, dlen, s);
                 }
+                p_delete(&t);
+                break;
             }
+
             d += m_strcpy(d, dlen, s);
             break;
         }
@@ -812,25 +809,18 @@ void rfc2047_decode(char **pd)
             n = (p - s);
             /* ignore spaces between encoded words
              * and linear white spaces between encoded word and *text */
-            if (!strict_mime) {
-                if (found_encoded && (m = lwslen(s, n)) != 0) {
-                    if (m != n)
-                        *d++ = ' ', dlen--;
-                    n -= m, s += m;
-                }
+            if (found_encoded && (m = lwslen(s, n)) != 0) {
+                if (m != n)
+                    *d++ = ' ', dlen--;
+                n -= m, s += m;
+            }
 
-                if ((m = n - lwsrlen(s, n)) != 0) {
-                    m  = m_strncpy(d, dlen, s, m);
-                    d += m;
-                    dlen -= m;
-                    if (m != n)
-                        *d++ = ' ', dlen--;
-                }
-            } else
-            if (!found_encoded || (ssize_t)strspn(s, " \t\r\n") != n) {
-                n  = m_strncpy(d, dlen, s, n);
-                d += n;
-                dlen -= n;
+            if ((m = n - lwsrlen(s, n)) != 0) {
+                m  = m_strncpy(d, dlen, s, m);
+                d += m;
+                dlen -= m;
+                if (m != n)
+                    *d++ = ' ', dlen--;
             }
         }