indent + comments + explicit std::
This commit is contained in:
parent
c700ea3a99
commit
385a7b9547
@ -490,7 +490,7 @@ bool rfc2047_decode(const std::string& in, std::string &out)
|
||||
DPRINT((stderr, "STATE: ready, ch %c\n", ch));
|
||||
switch (ch) {
|
||||
// Whitespace: stay ready
|
||||
case ' ': case ' ': value += ch;break;
|
||||
case ' ': case '\t': value += ch;break;
|
||||
// '=' -> forward to next state
|
||||
case '=': state = rfc2047open_eq; break;
|
||||
DPRINT((stderr, "STATE: open_eq\n"));
|
||||
@ -855,13 +855,22 @@ main(int argc, const char **argv)
|
||||
"application/x-stuff;"
|
||||
"title*0*=us-ascii'en'This%20is%20even%20more%20;"
|
||||
"title*1*=%2A%2A%2Afun%2A%2A%2A%20;"
|
||||
"title*2=\"isn't it!\""
|
||||
"title*2=\"isn't it!\"",
|
||||
|
||||
// The following are all invalid, trying to crash the parser...
|
||||
"",
|
||||
// This does not parse because of whitespace in the value.
|
||||
" complete garbage;",
|
||||
// This parses, but only the first word gets into the value
|
||||
" some value",
|
||||
" word ;", ";", "=", "; = ", "a;=\"toto tutu\"=", ";;;;a=b",
|
||||
};
|
||||
|
||||
for (unsigned int i = 0; i < sizeof(tr) / sizeof(char *); i++) {
|
||||
MimeHeaderValue parsed;
|
||||
if (!parseMimeHeaderValue(tr[i], parsed)) {
|
||||
fprintf(stderr, "PARSE ERROR for [%s]\n", tr[i]);
|
||||
continue;
|
||||
}
|
||||
printf("Field value: [%s]\n", parsed.value.c_str());
|
||||
map<string, string>::iterator it;
|
||||
|
||||
@ -53,15 +53,11 @@ Mime definitions RFC to 4-9-2006:
|
||||
|
||||
#include "base64.h"
|
||||
|
||||
#ifndef NO_NAMESPACES
|
||||
using std::string;
|
||||
#endif
|
||||
|
||||
/** A class to represent a MIME header value with parameters */
|
||||
class MimeHeaderValue {
|
||||
public:
|
||||
string value;
|
||||
std::map<string, string> params;
|
||||
std::string value;
|
||||
std::map<std::string, std::string> params;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -70,14 +66,17 @@ class MimeHeaderValue {
|
||||
* @param in the input string should be like: value; pn1=pv1; pn2=pv2.
|
||||
* Example: text/plain; charset="iso-8859-1"
|
||||
*/
|
||||
extern bool parseMimeHeaderValue(const string& in, MimeHeaderValue& psd);
|
||||
extern bool parseMimeHeaderValue(const std::string& in, MimeHeaderValue& psd);
|
||||
|
||||
/**
|
||||
* Quoted printable decoding. Doubles up as rfc2231 decoder, hence the esc
|
||||
* RFC2045 Quoted printable uses '=' , rfc2331 uses '%'. The two encodings are
|
||||
* Quoted Printable decoding.
|
||||
*
|
||||
* Doubles up as rfc2231 decoder, with the help of the hence the @param esc
|
||||
* parameter.
|
||||
* RFC2045 Quoted Printable uses '=' , RFC2331 uses '%'. The two encodings are
|
||||
* otherwise similar.
|
||||
*/
|
||||
extern bool qp_decode(const string& in, string &out, char esc = '=');
|
||||
extern bool qp_decode(const std::string& in, std::string &out, char esc = '=');
|
||||
|
||||
/** Decode an Internet mail field value encoded according to rfc2047
|
||||
*
|
||||
@ -90,14 +89,14 @@ extern bool qp_decode(const string& in, string &out, char esc = '=');
|
||||
* @param in input string, ascii with rfc2047 markup
|
||||
* @return out output string encoded in utf-8
|
||||
*/
|
||||
extern bool rfc2047_decode(const string& in, string &out);
|
||||
extern bool rfc2047_decode(const std::string& in, std::string &out);
|
||||
|
||||
|
||||
/** Decode RFC2822 date to unix time (gmt secs from 1970
|
||||
/** Decode RFC2822 date to unix time (gmt secs from 1970)
|
||||
*
|
||||
* @param dt date string (the part after Date: )
|
||||
* @return unix time
|
||||
*/
|
||||
time_t rfc2822DateToUxTime(const string& dt);
|
||||
time_t rfc2822DateToUxTime(const std::string& dt);
|
||||
|
||||
#endif /* _MIME_H_INCLUDED_ */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user