From 2d4ac6288dab1b12997c54cdc93d71ac5d0be8fc Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 10 Nov 2011 22:56:13 +0000 Subject: [PATCH] Alter commit 3758306 to allow region name to be substituted within a region console prompt This is to allow broader subsitution in the future. Currently, the only substitions are \R (for region name) and \\ (for a single backslash) e.g. "Region (\R) " is the current and continuing default prompt This renames custom_prompt in [Startup] to ConsolePrompt --- OpenSim/Region/Application/OpenSim.cs | 31 ++++++++++++++++++++++++--- bin/OpenSim.ini.example | 14 ++++++------ bin/OpenSimDefaults.ini | 7 ++++++ 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index 9fe284f4ca..beb75a8904 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs @@ -31,6 +31,7 @@ using System.Collections.Generic; using System.IO; using System.Reflection; using System.Text; +using System.Text.RegularExpressions; using System.Timers; using log4net; using Nini.Config; @@ -56,7 +57,16 @@ namespace OpenSim protected bool m_gui = false; protected string m_consoleType = "local"; protected uint m_consolePort = 0; - protected string m_custom_prompt; + + /// + /// Prompt to use for simulator command line. + /// + private string m_consolePrompt; + + /// + /// Regex for parsing out special characters in the prompt. + /// + private Regex m_consolePromptRegex = new Regex(@"([^\\])\\(\w)", RegexOptions.Compiled); private string m_timedScript = "disabled"; private Timer m_scriptTimer; @@ -111,7 +121,7 @@ namespace OpenSim Util.FireAndForgetMethod = asyncCallMethod; stpMaxThreads = startupConfig.GetInt("MaxPoolThreads", 15); - m_custom_prompt = startupConfig.GetString("custom_prompt", "Region"); + m_consolePrompt = startupConfig.GetString("console_prompt", @"Region (\R) "); } if (Util.FireAndForgetMethod == FireAndForgetMethod.SmartThreadPool) @@ -835,7 +845,22 @@ namespace OpenSim string regionName = (m_sceneManager.CurrentScene == null ? "root" : m_sceneManager.CurrentScene.RegionInfo.RegionName); MainConsole.Instance.Output(String.Format("Currently selected region is {0}", regionName)); - m_console.DefaultPrompt = String.Format("{0} ({1}) ", m_custom_prompt, regionName); + +// m_log.DebugFormat("Original prompt is {0}", m_consolePrompt); + string prompt = m_consolePrompt; + + // Replace "\R" with the region name + // Replace "\\" with "\" + prompt = m_consolePromptRegex.Replace(prompt, m => + { +// m_log.DebugFormat("Matched {0}", m.Groups[2].Value); + if (m.Groups[2].Value == "R") + return m.Groups[1].Value + regionName; + else + return m.Groups[0].Value; + }); + + m_console.DefaultPrompt = prompt; m_console.ConsoleScene = m_sceneManager.CurrentScene; } diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index c5205dbeae..253b24dbbf 100755 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -36,6 +36,14 @@ [Startup] + ;# {ConsolePrompt} {} {ConsolePrompt} {} "Region (\R) " + ;; Console prompt + ;; Certain special characters can be used to customize the prompt + ;; Currently, these are + ;; \R - substitute region name + ;; \\ - substitute \ + ; ConsolePrompt = "Region (\R) " + ;# {save_crashes} {} {Save crashes to disk?} {true false} false ;; Set this to true if you want to log crashes to disk ;; this can be useful when submitting bug reports. @@ -230,12 +238,6 @@ ;; by scripts have changed. ; DeleteScriptsOnStartup = true - ;; Custom prompt - ;; This value replaces the word "Region" in console prompt - ;; (usualy "Region (regionName) # " - ;; Useful only if you have to monitor serveral servers - ; custom_prompt = "MyServer1" - [SMTP] ;; The SMTP server enabled the email module to send email to external ;; destinations. diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index 7ea710e477..2c5fbf5c90 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -3,6 +3,13 @@ [Startup] + ; Console prompt + ; Certain special characters can be used to customize the prompt + ; Currently, these are + ; \R - substitute region name + ; \\ - substtitue \ + ConsolePrompt = "Region (\R) " + ; Set this to true if you want to log crashes to disk ; this can be useful when submitting bug reports. ; However, this will only log crashes within OpenSimulator that cause the entire program to exit