X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-mime%2Frfc2047.c;h=a2629a9e52f8c102f3d79b2f47c2870a6b1db253;hp=8d444bc10cb7c3a9be8aae9d1565d5abfff6aaff;hb=2c0e197ef42e4cdff1eff705c8b1b1d07336bf24;hpb=09a7c8b5bbcc1630207e799d07e4ac438c9c3f1c diff --git a/lib-mime/rfc2047.c b/lib-mime/rfc2047.c index 8d444bc..a2629a9 100644 --- a/lib-mime/rfc2047.c +++ b/lib-mime/rfc2047.c @@ -69,9 +69,9 @@ convert_string(const char *from, const char *f, ssize_t flen, obl = 4 * flen + 1; ob = buf = p_new(char, obl); - n = my_iconv(cd, &f, &flen, &ob, &obl); + n = mutt_iconv(cd, &f, &flen, &ob, &obl); - if (n < 0 || my_iconv(cd, 0, 0, &ob, &obl) < 0) { + if (n < 0 || mutt_iconv(cd, 0, 0, &ob, &obl) < 0) { int e = errno; iconv_close(cd); errno = e; @@ -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; @@ -266,14 +266,14 @@ static size_t try_block(const char *d, ssize_t dlen, ob = buf1; - if (my_iconv(cd, &ib, &ibl, &ob, &obl) < 0 - || my_iconv(cd, 0, 0, &ob, &obl) < 0) + if (mutt_iconv(cd, &ib, &ibl, &ob, &obl) < 0 + || mutt_iconv(cd, 0, 0, &ob, &obl) < 0) { assert (errno == E2BIG && ib > d); iconv_close(cd); return (ib - d == dlen) ? dlen : ib - d + 1; } - iconv_close (cd); + iconv_close(cd); } else { if (dlen > obl) return obl + 1; @@ -331,10 +331,10 @@ encode_block(char *s, char *d, ssize_t dlen, cd = mutt_iconv_open(tocode, fromcode, 0); assert (cd != MUTT_ICONV_ERROR); ib = d, ibl = dlen, ob = buf1, obl = sizeof(buf1) - m_strlen(tocode); - n1 = my_iconv(cd, &ib, &ibl, &ob, &obl); - n2 = my_iconv(cd, 0, 0, &ob, &obl); + n1 = mutt_iconv(cd, &ib, &ibl, &ob, &obl); + n2 = mutt_iconv(cd, 0, 0, &ob, &obl); assert (n1 >= 0 && n2 >= 0); - iconv_close (cd); + iconv_close(cd); return (*encoder)(s, buf1, ob - buf1, tocode); } else { return (*encoder)(s, d, dlen, tocode); @@ -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(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; + if (mime_which_token(mod_cset.assumed_charset, -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; } + 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--; } }