From ecad9f9fd589f90d1c7a20faf14af0304804b616 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Wed, 19 Oct 2011 20:09:02 +0100
Subject: Add "show scripts" command to show all scripts currently known to the
 script engine in the current region.

Also added synonym of "scripts show"
---
 .../Shared/Api/Implementation/LSL_Api.cs           |  2 --
 OpenSim/Region/ScriptEngine/XEngine/XEngine.cs     | 28 ++++++++++++++++++++++
 2 files changed, 28 insertions(+), 2 deletions(-)

(limited to 'OpenSim/Region')

diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 54bb62f..b8e9878 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -2446,10 +2446,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
         /// indices, and the tolerance for out-of-bound values, makes
         /// this more complicated than it might otherwise seem.
         /// </summary>
-
         public LSL_String llGetSubString(string src, int start, int end)
         {
-
             m_host.AddScriptLPS(1);
 
             // Normalize indices (if negative).
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
index 2a0ec37..9f8ee1c 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
@@ -41,6 +41,7 @@ using log4net;
 using Nini.Config;
 using Amib.Threading;
 using OpenSim.Framework;
+using OpenSim.Framework.Console;
 using OpenSim.Region.Framework.Scenes;
 using OpenSim.Region.Framework.Interfaces;
 using OpenSim.Region.ScriptEngine.Shared;
@@ -265,6 +266,33 @@ namespace OpenSim.Region.ScriptEngine.XEngine
                 OnScriptRemoved += m_XmlRpcRouter.ScriptRemoved;
                 OnObjectRemoved += m_XmlRpcRouter.ObjectRemoved;
             }
+
+            MainConsole.Instance.Commands.AddCommand(
+                "scripts", false, "scripts show", "scripts show", "Show script information",
+                "Show information on all scripts known to the script engine", HandleShowScripts);
+
+            MainConsole.Instance.Commands.AddCommand(
+                "scripts", false, "show scripts", "show scripts", "Show script information",
+                "Synonym for scripts show command", HandleShowScripts);
+        }
+
+        public void HandleShowScripts(string module, string[] cmdparams)
+        {
+            lock (m_Scripts)
+            {
+                MainConsole.Instance.OutputFormat(
+                    "Showing {0} scripts in {1}", m_Scripts.Count, m_Scene.RegionInfo.RegionName);
+
+                foreach (IScriptInstance instance in m_Scripts.Values)
+                {
+                    SceneObjectPart sop = m_Scene.GetSceneObjectPart(instance.ObjectID);
+
+                    MainConsole.Instance.OutputFormat(
+                        "{0}.{1}, script UUID {2}, prim UUID {3} @ {4}",
+                        instance.PrimName, instance.ScriptName, instance.AssetID, instance.ObjectID,
+                        sop.AbsolutePosition, m_Scene.RegionInfo.RegionName);
+                }
+            }
         }
 
         public void RemoveRegion(Scene scene)
-- 
cgit v1.1