version 0.2.8
[fms.git] / src / message.cpp
index eea0633..8582146 100644 (file)
@@ -7,6 +7,10 @@
 \r
 #include <algorithm>\r
 \r
+#ifdef DO_CHARSET_CONVERSION\r
+       #include "../include/charsetconverter.h"\r
+#endif\r
+\r
 #ifdef XMEM\r
        #include <xmem.h>\r
 #endif\r
@@ -611,6 +615,19 @@ const bool Message::ParseNNTPMessage(const std::string &nntpmessage)
                m_subject=mime.GetFieldValue("Subject");\r
                // remove any path folding\r
                m_subject=StringFunctions::Replace(m_subject,"\r\n","");\r
+#if DO_CHARSET_CONVERSION\r
+               if(mime.GetFieldCharset("Subject"))\r
+               {\r
+                       std::string charset=mime.GetFieldCharset("Subject");\r
+                       CharsetConverter ccv;\r
+                       if(charset!="" && charset!="UTF-8" && ccv.SetConversion(charset,"UTF-8"))\r
+                       {\r
+                               std::string output="";\r
+                               ccv.Convert(m_subject,output);\r
+                               m_subject=output;\r
+                       }\r
+               }\r
+#endif\r
        }\r
        else\r
        {\r
@@ -658,7 +675,21 @@ const bool Message::ParseNNTPMessage(const std::string &nntpmessage)
        {\r
                if((*i)->IsText() && (*i)->GetContent())\r
                {\r
-                       m_body+=(char *)(*i)->GetContent();\r
+                       std::string bodypart=(char *)(*i)->GetContent();\r
+#ifdef DO_CHARSET_CONVERSION\r
+                       std::string charset=(*i)->GetCharset();\r
+                       if(charset!="" && charset!="UTF-8")\r
+                       {\r
+                               CharsetConverter ccv;\r
+                               if(ccv.SetConversion(charset,"UTF-8"))\r
+                               {\r
+                                       std::string output="";\r
+                                       ccv.Convert(bodypart,output);\r
+                                       bodypart=output;\r
+                               }\r
+                       }\r
+#endif\r
+                       m_body+=bodypart;\r
                }\r
        }\r
 \r
@@ -689,35 +720,6 @@ const bool Message::StartFreenetInsert()
                xml.AddInReplyTo((*j).first,(*j).second);\r
        }\r
 \r
-\r
-       // find identity to insert with\r
-       /*\r
-       SQLite3DB::Statement st=m_db->Prepare("SELECT LocalIdentityID FROM tblLocalIdentity WHERE Name=?;");\r
-       st.Bind(0,m_fromname);\r
-       st.Step();\r
-\r
-       // couldn't find identity with this name - insert a new identity\r
-       if(!st.RowReturned())\r
-       {\r
-               if(m_addnewpostfromidentities==true)\r
-               {\r
-                       DateTime now;\r
-                       now.SetToGMTime();\r
-                       st=m_db->Prepare("INSERT INTO tblLocalIdentity(Name) VALUES(?);");\r
-                       st.Bind(0,m_fromname);\r
-                       st.Step(true);\r
-                       localidentityid=st.GetLastInsertRowID();\r
-               }\r
-               else\r
-               {\r
-                       return false;\r
-               }\r
-       }\r
-       else\r
-       {\r
-               st.ResultInt(0,localidentityid);\r
-       }\r
-       */\r
        localidentityid=FindLocalIdentityID(m_fromname);\r
        if(localidentityid==-1)\r
        {\r