version 0.2.18
[fms.git] / src / freenet / messagelistxml.cpp
index 4eed479..473a495 100644 (file)
@@ -219,12 +219,12 @@ const bool MessageListXML::ParseXML(const std::string &xml)
                        txt=hnd2.FirstChild("Date").FirstChild().ToText();\r
                        if(txt)\r
                        {\r
-                               date=txt->ValueStr();\r
+                               date=SanitizeSingleString(txt->ValueStr());\r
                        }\r
                        txt=hnd2.FirstChild("Index").FirstChild().ToText();\r
                        if(txt)\r
                        {\r
-                               tempstr=txt->ValueStr();\r
+                               tempstr=SanitizeSingleString(txt->ValueStr());\r
                                StringFunctions::Convert(tempstr,index);\r
                        }\r
                        node2=hnd2.FirstChild("Boards").FirstChild("Board").ToNode();\r
@@ -232,7 +232,7 @@ const bool MessageListXML::ParseXML(const std::string &xml)
                        {\r
                                if(node2->FirstChild())\r
                                {\r
-                                       std::string boardname=node2->FirstChild()->ValueStr();\r
+                                       std::string boardname=SanitizeSingleString(node2->FirstChild()->ValueStr());\r
                                        StringFunctions::LowerCase(boardname,boardname);\r
                                        boards.push_back(boardname);\r
                                }\r
@@ -244,6 +244,57 @@ const bool MessageListXML::ParseXML(const std::string &xml)
                        node=node->NextSibling("Message");\r
                }\r
 \r
+               node=hnd.FirstChild("MessageList").FirstChild("ExternalMessage").ToNode();\r
+               while(node)\r
+               {\r
+                       std::string type="";\r
+                       std::string identity="";\r
+                       date="";\r
+                       index=-1;\r
+                       boards.clear();\r
+\r
+                       TiXmlHandle hnd2(node);\r
+                       txt=hnd2.FirstChild("Type").FirstChild().ToText();\r
+                       if(txt)\r
+                       {\r
+                               type=SanitizeSingleString(txt->ValueStr());\r
+                       }\r
+\r
+                       if(type=="Keyed")\r
+                       {\r
+                               txt=hnd2.FirstChild("Identity").FirstChild().ToText();\r
+                               if(txt)\r
+                               {\r
+                                       identity=SanitizeSingleString(txt->ValueStr());\r
+                               }\r
+                               txt=hnd2.FirstChild("Date").FirstChild().ToText();\r
+                               if(txt)\r
+                               {\r
+                                       date=SanitizeSingleString(txt->ValueStr());\r
+                               }\r
+                               txt=hnd2.FirstChild("Index").FirstChild().ToText();\r
+                               if(txt)\r
+                               {\r
+                                       tempstr=SanitizeSingleString(txt->ValueStr());\r
+                                       StringFunctions::Convert(tempstr,index);\r
+                               }\r
+                               node2=hnd2.FirstChild("Boards").FirstChild("Board").ToNode();\r
+                               while(node2)\r
+                               {\r
+                                       if(node2->FirstChild())\r
+                                       {\r
+                                               std::string boardname=SanitizeSingleString(node2->FirstChild()->ValueStr());\r
+                                               StringFunctions::LowerCase(boardname,boardname);\r
+                                               boards.push_back(boardname);\r
+                                       }\r
+                                       node2=node2->NextSibling("Board");\r
+                               }\r
+                               m_externalmessages.push_back(externalmessage("Keyed",identity,date,index,boards));\r
+                       }\r
+\r
+                       node=node->NextSibling("ExternalMessage");\r
+               }\r
+\r
                return true;\r
        }\r
        else\r