Thank you, cmickeyb, for a patch to ass two string functions
to OSSL. Fixes Mantis #31730.6.3-post-fixes
							parent
							
								
									7d77e0e703
								
							
						
					
					
						commit
						37a00427bc
					
				| 
						 | 
				
			
			@ -43,6 +43,7 @@ using OpenSim.Region.ScriptEngine.Shared.ScriptBase;
 | 
			
		|||
using OpenSim.Region.ScriptEngine.Interfaces;
 | 
			
		||||
using OpenSim.Region.ScriptEngine.Shared.Api.Interfaces;
 | 
			
		||||
using TPFlags = OpenSim.Framework.Constants.TeleportFlags;
 | 
			
		||||
using System.Text.RegularExpressions;
 | 
			
		||||
 | 
			
		||||
using LSL_Float = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLFloat;
 | 
			
		||||
using LSL_Integer = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLInteger;
 | 
			
		||||
| 
						 | 
				
			
			@ -1105,5 +1106,53 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
 | 
			
		|||
                loginURI = config.Configs["GridInfo"].GetString("login", loginURI);
 | 
			
		||||
            return loginURI;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public LSL_String osFormatString(string str, LSL_List strings)
 | 
			
		||||
        {
 | 
			
		||||
            CheckThreatLevel(ThreatLevel.Low, "osFormatString");
 | 
			
		||||
            m_host.AddScriptLPS(1);
 | 
			
		||||
 | 
			
		||||
            return String.Format(str, strings.Data);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public LSL_List osMatchString(string src, string pattern, int start)
 | 
			
		||||
        {
 | 
			
		||||
            CheckThreatLevel(ThreatLevel.High, "osMatchString");
 | 
			
		||||
            m_host.AddScriptLPS(1);
 | 
			
		||||
 | 
			
		||||
            LSL_List result = new LSL_List();
 | 
			
		||||
 | 
			
		||||
            // Normalize indices (if negative).
 | 
			
		||||
            // After normlaization they may still be
 | 
			
		||||
            // negative, but that is now relative to
 | 
			
		||||
            // the start, rather than the end, of the
 | 
			
		||||
            // sequence.
 | 
			
		||||
            if (start < 0)
 | 
			
		||||
            {
 | 
			
		||||
                start = src.Length + start;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (start < 0 || start >= src.Length)
 | 
			
		||||
            {
 | 
			
		||||
                return result;  // empty list
 | 
			
		||||
            }
 | 
			
		||||
                 
 | 
			
		||||
            // Find matches beginning at start position
 | 
			
		||||
            Regex matcher = new Regex(pattern);
 | 
			
		||||
            Match match = matcher.Match(src, start);
 | 
			
		||||
            if (match.Success) 
 | 
			
		||||
            {
 | 
			
		||||
                foreach (System.Text.RegularExpressions.Group g in match.Groups)
 | 
			
		||||
                {
 | 
			
		||||
                    if (g.Success) 
 | 
			
		||||
                    {
 | 
			
		||||
                        result.Add(g.Value);
 | 
			
		||||
                        result.Add(g.Index);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return result;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,6 +31,8 @@ using OpenSim.Region.ScriptEngine.Interfaces;
 | 
			
		|||
using key = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString;
 | 
			
		||||
using rotation = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Quaternion;
 | 
			
		||||
using vector = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3;
 | 
			
		||||
using LSL_List = OpenSim.Region.ScriptEngine.Shared.LSL_Types.list;
 | 
			
		||||
using LSL_String = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString;
 | 
			
		||||
 | 
			
		||||
namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -104,5 +106,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
 | 
			
		|||
        string osGetGridNick();
 | 
			
		||||
        string osGetGridName();
 | 
			
		||||
        string osGetGridLoginURI();
 | 
			
		||||
 | 
			
		||||
        LSL_String osFormatString(string str, LSL_List strings);
 | 
			
		||||
        LSL_List osMatchString(string src, string pattern, int start);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,6 +38,8 @@ using integer = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLInteger;
 | 
			
		|||
using vector = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3;
 | 
			
		||||
using rotation = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Quaternion;
 | 
			
		||||
using key = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString;
 | 
			
		||||
using LSL_List = OpenSim.Region.ScriptEngine.Shared.LSL_Types.list;
 | 
			
		||||
using LSL_String = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString;
 | 
			
		||||
 | 
			
		||||
namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -262,6 +264,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
 | 
			
		|||
            return m_OSSL_Functions.osGetGridLoginURI();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public LSL_String osFormatString(string str, LSL_List strings)
 | 
			
		||||
        {
 | 
			
		||||
            return m_OSSL_Functions.osFormatString(str, strings);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public LSL_List osMatchString(string src, string pattern, int start)
 | 
			
		||||
        {
 | 
			
		||||
            return m_OSSL_Functions.osMatchString(src, pattern, start);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public OSSLPrim Prim;
 | 
			
		||||
 | 
			
		||||
        [Serializable]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue