#include <string.h>
#include <rfc1522.h>
#include <stringtools.h>
#include <mimedecode.h>
std::string rfc1522_token(const std::string &text, unsigned &i)
{
std::string dest;
dest.reserve(100);
for(; i<text.size(); i++)
{
if(text[i]=='?')
{
i++;
return dest;
}
dest+=text[i];
}
return dest;
}
std::string decode_rfc1522(const std::string &text)
{
std::string dest, charset, encoding, encoded_text;
for(unsigned i=0; i<text.size(); i++)
{
if(strncmp(text.c_str()+i, "=?", 2)==0)
{
i+=2;
charset=rfc1522_token(text, i);
encoding=rfc1522_token(text, i);
encoded_text=rfc1522_token(text, i);
if(stringcasecmp(encoding, "Q")==0)
dest+=mime_qp_decode(encoded_text, TRUE);
else if(stringcasecmp(encoding, "B")==0)
dest+=mime_base64_decode(encoded_text);
}
else
dest+=text[i];
}
return dest;
}
syntax highlighted by Code2HTML, v. 0.9.1