aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Framework')
-rw-r--r--OpenSim/Framework/Util.cs27
1 files changed, 21 insertions, 6 deletions
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs
index 8b8e507..0fa54b2 100644
--- a/OpenSim/Framework/Util.cs
+++ b/OpenSim/Framework/Util.cs
@@ -917,7 +917,25 @@ namespace OpenSim.Framework
917 /// <returns></returns> 917 /// <returns></returns>
918 public static T GetConfigVarFromSections<T>(IConfigSource config, string varname, string[] sections) 918 public static T GetConfigVarFromSections<T>(IConfigSource config, string varname, string[] sections)
919 { 919 {
920 object val = default(T); 920 return GetConfigVarFromSections<T>(config, varname, sections, default(T));
921 }
922
923 /// <summary>
924 /// Gets the value of a configuration variable by looking into
925 /// multiple sections in order. The latter sections overwrite
926 /// any values previously found.
927 /// </summary>
928 /// <remarks>
929 /// If no value is found then the given default value is returned
930 /// </remarks>
931 /// <typeparam name="T">Type of the variable</typeparam>
932 /// <param name="config">The configuration object</param>
933 /// <param name="varname">The configuration variable</param>
934 /// <param name="sections">Ordered sequence of sections to look at</param>
935 /// <param name="val">Default value</param>
936 /// <returns></returns>
937 public static T GetConfigVarFromSections<T>(IConfigSource config, string varname, string[] sections, object val)
938 {
921 foreach (string section in sections) 939 foreach (string section in sections)
922 { 940 {
923 IConfig cnf = config.Configs[section]; 941 IConfig cnf = config.Configs[section];
@@ -925,11 +943,7 @@ namespace OpenSim.Framework
925 continue; 943 continue;
926 944
927 if (typeof(T) == typeof(String)) 945 if (typeof(T) == typeof(String))
928 {
929 if (val == null) // no null strings, please
930 val = string.Empty;
931 val = cnf.GetString(varname, (string)val); 946 val = cnf.GetString(varname, (string)val);
932 }
933 else if (typeof(T) == typeof(Boolean)) 947 else if (typeof(T) == typeof(Boolean))
934 val = cnf.GetBoolean(varname, (bool)val); 948 val = cnf.GetBoolean(varname, (bool)val);
935 else if (typeof(T) == typeof(Int32)) 949 else if (typeof(T) == typeof(Int32))
@@ -937,8 +951,9 @@ namespace OpenSim.Framework
937 else if (typeof(T) == typeof(float)) 951 else if (typeof(T) == typeof(float))
938 val = cnf.GetFloat(varname, (int)val); 952 val = cnf.GetFloat(varname, (int)val);
939 else 953 else
940 m_log.WarnFormat("[UTIL]: Unhandled type {0}", typeof(T)); 954 m_log.ErrorFormat("[UTIL]: Unhandled type {0}", typeof(T));
941 } 955 }
956
942 return (T)val; 957 return (T)val;
943 } 958 }
944 959