From 27453890d5a5d09e47c638ccef92f45b1ce360b2 Mon Sep 17 00:00:00 2001 From: Melanie Date: Mon, 21 Dec 2009 10:26:52 +0000 Subject: Script State Fix: Part 2 Change the reader to wrap old-style definitions in new style wrappers. Change importer to not check irrelevant data that can't be reconstructed This removes the last bit of knowledge of XEngine's .state files from core. --- OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | 36 ++++++++++++++------------ 1 file changed, 20 insertions(+), 16 deletions(-) (limited to 'OpenSim/Region/ScriptEngine/XEngine') diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index 082c99b..25a4cd6 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs @@ -1368,10 +1368,10 @@ namespace OpenSim.Region.ScriptEngine.XEngine return false; } - public void SetXMLState(UUID itemID, string xml) + public bool SetXMLState(UUID itemID, string xml) { if (xml == String.Empty) - return; + return false; XmlDocument doc = new XmlDocument(); @@ -1382,17 +1382,17 @@ namespace OpenSim.Region.ScriptEngine.XEngine catch (Exception) { m_log.Error("[XEngine]: Exception decoding XML data from region transfer"); - return; + return false; } XmlNodeList rootL = doc.GetElementsByTagName("State"); if (rootL.Count < 1) - return; + return false; XmlElement rootE = (XmlElement)rootL[0]; if (rootE.GetAttribute("Engine") != ScriptEngineName) - return; + return false; // On rez from inventory, that ID will have changed. It was only // advisory anyway. So we don't check it anymore. @@ -1403,7 +1403,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine XmlNodeList stateL = rootE.GetElementsByTagName("ScriptState"); if (stateL.Count != 1) - return; + return false; XmlElement stateE = (XmlElement)stateL[0]; @@ -1412,7 +1412,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine XmlNodeList assemL = rootE.GetElementsByTagName("Assembly"); if (assemL.Count != 1) - return; + return false; XmlElement assemE = (XmlElement)assemL[0]; @@ -1452,19 +1452,23 @@ namespace OpenSim.Region.ScriptEngine.XEngine sfs.Close(); XmlNodeList mapL = rootE.GetElementsByTagName("LineMap"); - - XmlElement mapE = (XmlElement)mapL[0]; + if (mapL.Count > 0) + { + XmlElement mapE = (XmlElement)mapL[0]; - string mappath = Path.Combine("ScriptEngines", World.RegionInfo.RegionID.ToString()); - mappath = Path.Combine(mappath, mapE.GetAttribute("Filename")); + string mappath = Path.Combine("ScriptEngines", World.RegionInfo.RegionID.ToString()); + mappath = Path.Combine(mappath, mapE.GetAttribute("Filename")); - FileStream mfs = File.Create(mappath); - StreamWriter msw = new StreamWriter(mfs); + FileStream mfs = File.Create(mappath); + StreamWriter msw = new StreamWriter(mfs); - msw.Write(mapE.InnerText); + msw.Write(mapE.InnerText); - msw.Close(); - mfs.Close(); + msw.Close(); + mfs.Close(); + } + + return true; } } } -- cgit v1.1