const char *p = charsets;
while (*p) {
- char cset[SHORT_STRING];
+ char cset[STRING];
const char *q;
char *s;
ssize_t slen, n;
ssize_t elen;
const char *charsets;
- if (!Charset || !*pd)
+ if (!MCharset.charset || !*pd)
return;
- charsets = m_strisempty(SendCharset) ? "UTF-8" : SendCharset;
+ charsets = m_strisempty(MCharset.send_charset) ? "utf-8" : MCharset.send_charset;
rfc2047_encode(*pd, m_strlen(*pd), col,
- Charset, charsets, &e, &elen,
+ MCharset.charset, charsets, &e, &elen,
encode_specials ? RFC822Specials : NULL);
p_delete(pd);
*q = '\0';
if (*charset)
- mutt_convert_string(&d0, charset, Charset, M_ICONV_HOOK_FROM);
+ mutt_convert_string(&d0, charset, MCharset.charset, M_ICONV_HOOK_FROM);
m_strcpy(d, len, d0);
p_delete(&d0);
return 0;
*/
void rfc2047_decode(char **pd)
{
- const int strict_mime = option(OPTSTRICTMIME);
-
const char *s = *pd;
char *d0, *d;
ssize_t dlen;
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(MCharset.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;
}
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--;
}
}