From 2219ccc5b053d5c8885de113488dfb6718903435 Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Tue, 25 Sep 2007 01:20:30 +0000 Subject: [PATCH] * Fixed Culture-variant parsing of config options --- .../Configuration/ConfigurationMember.cs | 9 ++++--- OpenSim/Framework/General/Culture.cs | 26 +++++++++++++++++++ .../Framework/General/Types/EstateSettings.cs | 4 ++- OpenSim/Region/Application/Application.cs | 6 ++--- OpenSim/Region/Application/OpenSimMain.cs | 2 ++ OpenSim/Region/Environment/Scenes/Scene.cs | 7 +---- .../Terrain.BasicTerrain/TerrainEngine.cs | 6 +++-- 7 files changed, 44 insertions(+), 16 deletions(-) create mode 100644 OpenSim/Framework/General/Culture.cs diff --git a/OpenSim/Framework/General/Configuration/ConfigurationMember.cs b/OpenSim/Framework/General/Configuration/ConfigurationMember.cs index c94fd8e4b0..e4c13ba12e 100644 --- a/OpenSim/Framework/General/Configuration/ConfigurationMember.cs +++ b/OpenSim/Framework/General/Configuration/ConfigurationMember.cs @@ -9,6 +9,7 @@ using libsecondlife; using OpenSim.Framework.Console; using OpenSim.Framework.Configuration.Interfaces; +using System.Globalization; namespace OpenSim.Framework.Configuration { @@ -295,7 +296,7 @@ namespace OpenSim.Framework.Configuration break; case ConfigurationOption.ConfigurationTypes.TYPE_FLOAT: float floatResult; - if (float.TryParse(console_result, out floatResult)) + if (float.TryParse(console_result, NumberStyles.AllowDecimalPoint, Culture.NumberFormatInfo, out floatResult)) { convertSuccess = true; return_result = floatResult; @@ -304,7 +305,7 @@ namespace OpenSim.Framework.Configuration break; case ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE: double doubleResult; - if (Double.TryParse(console_result, out doubleResult)) + if (Double.TryParse(console_result, NumberStyles.AllowDecimalPoint, Culture.NumberFormatInfo, out doubleResult)) { convertSuccess = true; return_result = doubleResult; @@ -332,12 +333,12 @@ namespace OpenSim.Framework.Configuration { if (configOption.configurationUseDefaultNoPrompt) { - MainLog.Instance.Error("Default given for '" + configOption.configurationKey + "' is not valid; the configuration result must be " + errorMessage + ". Will skip this option..."); + MainLog.Instance.Error("CONFIG", string.Format("[{3}]:[{1}] is not valid default for parameter [{0}].\nThe configuration result must be parsable to {2}.\n", configOption.configurationKey, console_result, errorMessage, configurationFilename)); convertSuccess = true; } else { - MainLog.Instance.Warn("configuration","Incorrect result given, the configuration option must be " + errorMessage + ". Prompting for same option..."); + MainLog.Instance.Warn("CONFIG", string.Format("[{3}]:[{1}] is not a valid value [{0}].\nThe configuration result must be parsable to {2}.\n", configOption.configurationKey, console_result, errorMessage, configurationFilename)); ignoreNextFromConfig = true; } } diff --git a/OpenSim/Framework/General/Culture.cs b/OpenSim/Framework/General/Culture.cs new file mode 100644 index 0000000000..8f8561b6cc --- /dev/null +++ b/OpenSim/Framework/General/Culture.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text; +using System.Threading; + +namespace OpenSim.Framework +{ + public class Culture + { + private static readonly CultureInfo m_cultureInfo = new System.Globalization.CultureInfo("en-US", true); + + public static NumberFormatInfo NumberFormatInfo + { + get + { + return m_cultureInfo.NumberFormat; + } + } + + public static void SetCurrentCulture() + { + Thread.CurrentThread.CurrentCulture = m_cultureInfo; + } + } +} diff --git a/OpenSim/Framework/General/Types/EstateSettings.cs b/OpenSim/Framework/General/Types/EstateSettings.cs index a8f6bf1c7d..abdcf6f8ef 100644 --- a/OpenSim/Framework/General/Types/EstateSettings.cs +++ b/OpenSim/Framework/General/Types/EstateSettings.cs @@ -29,6 +29,7 @@ using System.IO; using libsecondlife; using OpenSim.Framework.Configuration; using OpenSim.Framework.Utilities; +using System.Globalization; namespace OpenSim.Framework.Types { @@ -719,7 +720,8 @@ namespace OpenSim.Framework.Types this.m_terrainMultiplier = System.Convert.ToDouble(configuration_result); break; case "water_height": - float.TryParse(((double)configuration_result).ToString(),out this.m_waterHeight); + double tmpVal = (double) configuration_result; + this.m_waterHeight = (float) tmpVal; break; case "terrain_image_id": this.m_terrainImageID = (LLUUID)configuration_result; diff --git a/OpenSim/Region/Application/Application.cs b/OpenSim/Region/Application/Application.cs index 572f034c16..ec7c43d23c 100644 --- a/OpenSim/Region/Application/Application.cs +++ b/OpenSim/Region/Application/Application.cs @@ -29,6 +29,8 @@ using System; using OpenSim.Framework.Console; using OpenSim.Region.Environment.Scenes; using Nini.Config; +using System.Threading; +using OpenSim.Framework; namespace OpenSim { @@ -55,9 +57,7 @@ namespace OpenSim Console.WriteLine("Starting...\n"); - // Set current culture - - System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(""); // en + Culture.SetCurrentCulture(); ArgvConfigSource configSource = new ArgvConfigSource(args); diff --git a/OpenSim/Region/Application/OpenSimMain.cs b/OpenSim/Region/Application/OpenSimMain.cs index d3b4e49d1b..dad6afdd5d 100644 --- a/OpenSim/Region/Application/OpenSimMain.cs +++ b/OpenSim/Region/Application/OpenSimMain.cs @@ -44,6 +44,8 @@ using OpenSim.Region.Communications.OGS1; using OpenSim.Region.Environment; using OpenSim.Region.Environment.Scenes; using OpenSim.Region.Physics.Manager; +using System.Globalization; +using RegionInfo=OpenSim.Framework.Types.RegionInfo; namespace OpenSim { diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 5849519a7a..5fbe9183f5 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -54,6 +54,7 @@ namespace OpenSim.Region.Environment.Scenes { public partial class Scene : SceneBase { + public delegate bool FilterAvatarList(ScenePresence avatar); protected Timer m_heartbeatTimer = new Timer(); @@ -160,12 +161,6 @@ namespace OpenSim.Region.Environment.Scenes #region Constructors - /// - /// Creates a new Scene class, and a region to go with it. - /// - /// Dictionary to contain client threads - /// Region Handle for this region - /// Region Name for this region public Scene(RegionInfo regInfo, AgentCircuitManager authen, CommunicationsManager commsMan, AssetCache assetCach, StorageManager storeManager, BaseHttpServer httpServer, ModuleLoader moduleLoader) diff --git a/OpenSim/Region/Terrain.BasicTerrain/TerrainEngine.cs b/OpenSim/Region/Terrain.BasicTerrain/TerrainEngine.cs index 6454bdc5ea..c3c49351ea 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/TerrainEngine.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/TerrainEngine.cs @@ -33,6 +33,8 @@ using System.IO; using libTerrain; using OpenJPEGNet; using OpenSim.Framework.Interfaces; +using System.Globalization; +using OpenSim.Framework; namespace OpenSim.Region.Terrain { @@ -603,8 +605,8 @@ namespace OpenSim.Region.Terrain if (args.GetLength(0) > 2) { int.TryParse(args[2].ToString(), out count); - double.TryParse(args[3].ToString(), out sizeMin); - double.TryParse(args[4].ToString(), out sizeRange); + double.TryParse(args[3].ToString(), NumberStyles.AllowDecimalPoint, Culture.NumberFormatInfo, out sizeMin); + double.TryParse(args[4].ToString(), NumberStyles.AllowDecimalPoint, Culture.NumberFormatInfo, out sizeRange); bool.TryParse(args[5].ToString(), out island); bool.TryParse(args[6].ToString(), out additive); bool.TryParse(args[7].ToString(), out noisy);