1 /* 2 ** Copyright 2002-2004, Double Precision Inc. 3 ** 4 ** See COPYING for distribution information. 5 */ 6 #include "libmail_config.h" 7 #include "misc.H" 8 #include "autodecoder.H" 9 10 using namespace std; 11 base64(mail::autodecoder & meArg)12mail::autodecoder::base64::base64(mail::autodecoder &meArg) 13 : me(meArg) 14 { 15 } 16 ~base64()17mail::autodecoder::base64::~base64() 18 { 19 } 20 decoded(string s)21void mail::autodecoder::base64::decoded(string s) 22 { 23 me.decoded(s); 24 } 25 qp(mail::autodecoder & meArg)26mail::autodecoder::qp::qp(mail::autodecoder &meArg) 27 : me(meArg) 28 { 29 } 30 ~qp()31mail::autodecoder::qp::~qp() 32 { 33 } 34 decoded(string s)35void mail::autodecoder::qp::decoded(string s) 36 { 37 me.decoded(s); 38 } 39 40 ////////////////////////////////////////////////////////////////////// 41 autodecoder(string cte)42mail::autodecoder::autodecoder(string cte) 43 : base64Decoder(*this), 44 qpDecoder(*this), 45 decoder(NULL) 46 { 47 mail::upper(cte); 48 49 if (cte == "QUOTED-PRINTABLE") 50 decoder= &qpDecoder; 51 52 if (cte == "BASE64") 53 decoder= &base64Decoder; 54 } 55 ~autodecoder()56mail::autodecoder::~autodecoder() 57 { 58 } 59 decode(string s)60void mail::autodecoder::decode(string s) 61 { 62 if (decoder) 63 decoder->decode(s); // 7bit or 8bit, or something... 64 else 65 decoded(s); 66 } 67 68