X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=rfc2047.c;h=dd62416b5ea9d0ecc64073db88ecbe2c756a0f37;hp=0b35cf78d6f4dee760cd5589cc99036010717e99;hb=871a94fc21c9d349bb0fe8851e0f2e3a07527ed5;hpb=238b70e39b78f585c586bd51aef41988b3cc73d1 diff --git a/rfc2047.c b/rfc2047.c index 0b35cf7..dd62416 100644 --- a/rfc2047.c +++ b/rfc2047.c @@ -16,8 +16,9 @@ #include #include +#include + #include "mutt.h" -#include "mime.h" #include "charset.h" #include "rfc2047.h" #include "thread.h" @@ -45,8 +46,6 @@ #define CONTINUATION_BYTE(c) (((c) & 0xc0) == 0x80) -extern char RFC822Specials[]; - typedef size_t (*encoder_t) (char *, const char *, size_t, const char *); @@ -154,24 +153,24 @@ static size_t b_encoder (char *s, const char *d, size_t dlen, if (!dlen) break; else if (dlen == 1) { - *s++ = B64Chars[(*d >> 2) & 0x3f]; - *s++ = B64Chars[(*d & 0x03) << 4]; + *s++ = __m_b64chars[(*d >> 2) & 0x3f]; + *s++ = __m_b64chars[(*d & 0x03) << 4]; *s++ = '='; *s++ = '='; break; } else if (dlen == 2) { - *s++ = B64Chars[(*d >> 2) & 0x3f]; - *s++ = B64Chars[((*d & 0x03) << 4) | ((d[1] >> 4) & 0x0f)]; - *s++ = B64Chars[(d[1] & 0x0f) << 2]; + *s++ = __m_b64chars[(*d >> 2) & 0x3f]; + *s++ = __m_b64chars[((*d & 0x03) << 4) | ((d[1] >> 4) & 0x0f)]; + *s++ = __m_b64chars[(d[1] & 0x0f) << 2]; *s++ = '='; break; } else { - *s++ = B64Chars[(*d >> 2) & 0x3f]; - *s++ = B64Chars[((*d & 0x03) << 4) | ((d[1] >> 4) & 0x0f)]; - *s++ = B64Chars[((d[1] & 0x0f) << 2) | ((d[2] >> 6) & 0x03)]; - *s++ = B64Chars[d[2] & 0x3f]; + *s++ = __m_b64chars[(*d >> 2) & 0x3f]; + *s++ = __m_b64chars[((*d & 0x03) << 4) | ((d[1] >> 4) & 0x0f)]; + *s++ = __m_b64chars[((d[1] & 0x0f) << 2) | ((d[2] >> 6) & 0x03)]; + *s++ = __m_b64chars[d[2] & 0x3f]; d += 3, dlen -= 3; } } @@ -534,9 +533,9 @@ void _rfc2047_encode_string (char **pd, int encode_specials, int col) *pd = e; } -void rfc2047_encode_adrlist (ADDRESS * addr, const char *tag) +void rfc2047_encode_adrlist (address_t * addr, const char *tag) { - ADDRESS *ptr = addr; + address_t *ptr = addr; int col = tag ? m_strlen(tag) + 2 : 32; while (ptr) { @@ -582,9 +581,7 @@ static int rfc2047_decode_word (char *d, const char *s, size_t len) for (; pp < pp1; pp++) { if (*pp == '_') *pd++ = ' '; - else if (*pp == '=' && - (!(pp[1] & ~127) && hexval (pp[1]) != -1) && - (!(pp[2] & ~127) && hexval (pp[2]) != -1)) { + else if (*pp == '=' && hexval(pp[1]) >= 0 && hexval(pp[2]) >= 0) { *pd++ = (hexval (pp[1]) << 4) | hexval (pp[2]); pp += 2; } @@ -599,7 +596,7 @@ static int rfc2047_decode_word (char *d, const char *s, size_t len) for (; pp < pp1; pp++) { if (*pp == '=') break; - if ((*pp & ~127) || (c = base64val (*pp)) == -1) + if ((c = base64val(*pp)) < 0) continue; if (k + 6 >= 8) { k -= 2; @@ -788,7 +785,7 @@ void rfc2047_decode (char **pd) str_adjust (pd); } -void rfc2047_decode_adrlist (ADDRESS * a) +void rfc2047_decode_adrlist (address_t * a) { while (a) { if (a->personal)